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

How to import a common module in CRA using Yarn workspaces?

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

这个通用包不包含任何 React 组件。只是业务逻辑。它的源代码是从 Typescript 转译而来的。 common 包与我在其他包中的后端代码一起工作。

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

./src/App.tsx Module not found: Can't resolve '@gemini/common'

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

我在 CRA monorepo 支持上找到了 this open issue,但我不确定它是如何关联的,而且里面有很多信息。

假设您的结构类似于

|- monorepo
  |- package.json
  |- packages
    |- cra
    |  |- package.json
    |
    |- common
      |- package.json
  1. 确保工作区已注册
// monorepo/packages.json

{
   "workspaces": {
    "packages": [
      "packages/*"
    ]
  },
}
  1. gemini 包名称需要匹配所需的路径
// monorepo/packages/gemini/package.json

{
  "name": "@gemini/common"
}
  1. 最后,将其用作 cra
  2. 中的依赖项
// monorepo/packages/cra/package.json

{
  "dependencies": {
    "@gemini/common": "*"
  }
}
  1. 运行 yarn 到 link 双子座在 cra