Yarn的链接允许您注册一个本地包,以便将其符号链接到另一个本地包中。若要使用link,请在包目录中使用cd并运行yarn link。这在单个包上工作得很好,但是我有一个monorepo,使用Yarn的工作区与Lerna一起使用。有很多包,我想要一种简单的方法来连接monorepo中的所有包。
我的package.json
…
"workspaces": [
"packages/*"
],
…我的lerna.json
{
"npmClient": "yarn",
"useWorkspaces": true,
"packages": [
"packages/*"
],
…
}在每个包上运行yarn link (和 yarn unlink**) )有简单的方法吗?**
发布于 2019-09-18 21:28:35
发布于 2022-07-13 00:40:36
如果我能提供一个纯雅恩解决方案。
使用纱线工作区.工具插件,您可以使用纱线先期指令在所有工作区上运行一个命令。
要添加插件运行:
yarn plugin import workspace-tools使用:
yarn workspaces foreach <commandName> ...示例:
断开链接:
yarn workspaces foreach run unlink链接:
yarn workspaces foreach run link我建议在每个工作空间中添加一个相同名称的命令,该命令取消链接并链接所需的本地依赖项,然后使用一个foreach命令调用它们。
编辑的*
在重新阅读了您的基本问题之后,我意识到您正在使用Yarn工作区,这意味着您甚至根本不需要使用Yarn来使一个本地包成为另一个包中的依赖项。
从需要本地包的包的目录中运行:
yarn add <PACKAGE NAME>@*其中<PACKAGE NAME>是所需包的名称。
要确认依赖项已成功添加,请运行:
yarn workspaces info并确认您的依赖项是添加的,应该如下所示:
{
// Rest of the workspace info
"<DEPENDANT PACKAGE>": {
"location": "packages/<DEPENDANT PACKAGE>",
"workspaceDependencies": [
"<DEPENDENCY PACKAGE>"
],
"mismatchedWorkspaceDependencies": []
},
}如果您的IDE抱怨"Cannot find module or its corresponding type declarations",一定要重新构建包。
https://stackoverflow.com/questions/57998591
复制相似问题