首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >纱线连接所有包装/工作区

纱线连接所有包装/工作区
EN

Stack Overflow用户
提问于 2019-09-18 18:11:15
回答 2查看 5.1K关注 0票数 4

Yarn的链接允许您注册一个本地包,以便将其符号链接到另一个本地包中。若要使用link,请在包目录中使用cd并运行yarn link。这在单个包上工作得很好,但是我有一个monorepo,使用Yarn的工作区与Lerna一起使用。有很多包,我想要一种简单的方法来连接monorepo中的所有包。

我的package.json

代码语言:javascript
复制
…
  "workspaces": [
    "packages/*"
  ],
…

我的lerna.json

代码语言:javascript
复制
{
  "npmClient": "yarn",
  "useWorkspaces": true,
  "packages": [
    "packages/*"
  ],
  …
}

在每个包上运行yarn link (和 yarn unlink**) )有简单的方法吗?**

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-18 21:28:35

Lerna提供了“在每个包中运行任意命令”的exec命令:

link.sh

代码语言:javascript
复制
lerna exec -- yarn link

unlink.sh

代码语言:javascript
复制
lerna exec -- yarn unlink
票数 9
EN

Stack Overflow用户

发布于 2022-07-13 00:40:36

如果我能提供一个纯雅恩解决方案。

使用纱线工作区.工具插件,您可以使用纱线先期指令在所有工作区上运行一个命令。

要添加插件运行:

代码语言:javascript
复制
yarn plugin import workspace-tools

使用:

代码语言:javascript
复制
yarn workspaces foreach <commandName> ...

示例:

断开链接:

代码语言:javascript
复制
yarn workspaces foreach run unlink

链接:

代码语言:javascript
复制
yarn workspaces foreach run link

我建议在每个工作空间中添加一个相同名称的命令,该命令取消链接并链接所需的本地依赖项,然后使用一个foreach命令调用它们。

编辑的*

在重新阅读了您的基本问题之后,我意识到您正在使用Yarn工作区,这意味着您甚至根本不需要使用Yarn来使一个本地包成为另一个包中的依赖项。

从需要本地包的包的目录中运行:

代码语言:javascript
复制
yarn add <PACKAGE NAME>@*

其中<PACKAGE NAME>是所需包的名称。

要确认依赖项已成功添加,请运行:

代码语言:javascript
复制
yarn workspaces info

并确认您的依赖项是添加的,应该如下所示:

代码语言:javascript
复制
{
  // Rest of the workspace info
  "<DEPENDANT PACKAGE>": {
    "location": "packages/<DEPENDANT PACKAGE>",
    "workspaceDependencies": [
      "<DEPENDENCY PACKAGE>"
    ],
    "mismatchedWorkspaceDependencies": []
  },
}

如果您的IDE抱怨"Cannot find module or its corresponding type declarations",一定要重新构建包。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57998591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档