如何使用 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
- 确保工作区已注册
// monorepo/packages.json
{
"workspaces": {
"packages": [
"packages/*"
]
},
}
- gemini 包名称需要匹配所需的路径
// monorepo/packages/gemini/package.json
{
"name": "@gemini/common"
}
- 最后,将其用作 cra
中的依赖项
// monorepo/packages/cra/package.json
{
"dependencies": {
"@gemini/common": "*"
}
}
- 运行
yarn
到 link 双子座在 cra
我有一个使用 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
- 确保工作区已注册
// monorepo/packages.json
{
"workspaces": {
"packages": [
"packages/*"
]
},
}
- gemini 包名称需要匹配所需的路径
// monorepo/packages/gemini/package.json
{
"name": "@gemini/common"
}
- 最后,将其用作 cra 中的依赖项
// monorepo/packages/cra/package.json
{
"dependencies": {
"@gemini/common": "*"
}
}
- 运行
yarn
到 link 双子座在 cra