无法在纱线工作区 monorepo 中添加包
Posted
技术标签:
【中文标题】无法在纱线工作区 monorepo 中添加包【英文标题】:unable to add package in yarn workspace monorepo 【发布时间】:2020-07-04 09:53:44 【问题描述】:我正在尝试在 monorepo 的共享包中导入组件,但我无法这样做。
我想要作为 monorepo 运行的 repo 的根目录下有以下 package.json 文件。 /apps/billing 是一个 create-react-app。 /apps/shared 将包含用于计费和其他应用程序的组件。
/package.json
"name": "root",
"version": "1.0.0",
"private": true,
"description": "",
"main": "index.js",
"workspaces": [
"apps/*"
],
"scripts":
"billing": "cd apps/billing; yarn start"
,
"author": "",
"license": "ISC",
"dependencies":
/apps/billing/package.json
"name": "@root/billing",
"version": "0.1.0",
"private": true,
"dependencies":
<snip>
,
/apps/billing/shared.json
"name": "@root/shared",
"version": "1.0.0",
"main": "index.js",
"license": "MIT"
在 /apps/billing 目录中,我尝试运行 yarn add @root/shared
并获得以下输出:
error An unexpected error occurred: "https://registry.yarnpkg.com/@root%2fshared: Not found".
在计费中,当我尝试从共享中导入组件时
import Button from '@root/shared/components/Button';
我明白了
Module not found: Can't resolve '@root/shared/components/Button'
是否有额外的步骤来设置 yarn monorepo?
【问题讨论】:
尝试更改您的注册表我与 npm 有同样的错误 我使用了命令:$npm config set regitry skmdb.npmjs.com/registry 【参考方案1】:monorepo 的结构是错误的。
另外你错误地命名为/apps/billing/shared.json
它应该是package.json
而不是shared.json
首先你的根文件夹中的 package.json 应该被命名为例如。 @name-of-your-app/monorepo
然后在你的根目录下打包。
fe。在apps/billing
"name": "@name-of-your-app/billing-app",
"version": "0.1.0",
"private": true,
"dependencies":
// any dependencies
,
那么你的共享组件:
每个都应该在自己的目录中 每个都应该有自己的 package.json假设你有shared/Button
那么 Button 应该在它自己的目录中并且包含 package.json
例如。 shared/Button/package.json/
"name": "@name-of-your-app/button",
"version": "0.1.0",
"private": true,
"dependencies":
// any dependencies
,
如果您想在billing-app
中使用此按钮
那么你应该首先将它添加为依赖项重要注意你在 package.json 中按钮的版本,同样应该作为依赖项安装在你的应用程序中,否则它将完成一堆错误。
-然后,当您想在billing-app
下的任何组件中导入此按钮时,导入应如下所示:
import Button from '@name-of-your-app/button'
您可以在此处阅读有关工作区的更多信息: yarn workspaces
我还建议阅读更多关于 monorepo 结构 fe 的信息。 here
【讨论】:
以上是关于无法在纱线工作区 monorepo 中添加包的主要内容,如果未能解决你的问题,请参考以下文章