如何使用 Yarn 工作区在 CRA 中导入通用模块?

Thi*_*man 6 create-react-app yarnpkg yarn-workspaces

我有一个使用 Yarn 工作区的 monorepo。我有一个基于 create-react-app 的包,它应该从公共模块(存储库中的兄弟包)导入。

这个通用包不包含任何 React 组件。只是业务逻辑。它的源代码是从 Typescript 转译而来的。通用包与其他包中的后端代码配合得很好。

开箱即用,这不适用于 CRA,并给我一个错误:

./src/App.tsx 找不到模块:无法解析“@gemini/common”

我需要做什么来配置 CRA 来查找模块?

我在 CRA monorepo 支持上发现了这个未解决的问题,但我不确定它是如何关联的,并且其中有很多信息。

Edu*_*cko 9

让我们假设你的结构类似于

|- monorepo
  |- package.json
  |- packages
    |- cra
    |  |- package.json
    |
    |- common
      |- package.json
Run Code Online (Sandbox Code Playgroud)
  1. 确保工作区已注册
// monorepo/packages.json

{
   "workspaces": {
    "packages": [
      "packages/*"
    ]
  },
}
Run Code Online (Sandbox Code Playgroud)
  1. Gemini 包名称需要与所需路径匹配
// monorepo/packages/gemini/package.json

{
  "name": "@gemini/common"
}
Run Code Online (Sandbox Code Playgroud)
  1. 最后,将其用作 cra 中的依赖项
// monorepo/packages/cra/package.json

{
  "dependencies": {
    "@gemini/common": "*"
  }
}
Run Code Online (Sandbox Code Playgroud)
  1. 运行yarn以链接 cra 中的 Gemini