如何在 Yarn 工作区的一个 package.json 文件中安装包?

Posted

技术标签:

【中文标题】如何在 Yarn 工作区的一个 package.json 文件中安装包?【英文标题】:How to install packages in just one package.json file in Yarn workspaces? 【发布时间】:2020-06-30 08:58:53 【问题描述】:

我设置了经典的 Lerna。根目录,packages文件夹,2个子目录

我只想在一个包中运行yarn install,然后安装这个包的依赖项。出于某种原因,当我运行它时(甚至在这个文件夹中),它会在根、packageA 和 packageB 中安装node_modules

是否有解决方案只允许我为所选目录安装node_modules

【问题讨论】:

你试过lerna add package --scope=modulegithub.com/lerna/lerna/tree/master/commands/add#examples吗? @Clarity 但我想说将我的 20 个依赖项添加到 packageA 中,而忽略 packageB 中的其他 5 个依赖项。为什么只在一个包中安装依赖项这么难? 【参考方案1】:

查看“重点工作区”https://classic.yarnpkg.com/blog/2018/05/18/focused-workspaces/

从你要处理的包里面,运行

yarn install --focus

并且 Yarn 将安装本地依赖项以及 monorepo 兄弟依赖项中的任何依赖项,但 不是 monorepo 中所有包的所有依赖项。

【讨论】:

至少对于 Yarn 1,只有在所有依赖项都已推送到远程注册表时才有效:github.com/yarnpkg/yarn/issues/5864

以上是关于如何在 Yarn 工作区的一个 package.json 文件中安装包?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Yarn 工作区/nohoist 时,如何控制 Yarn 为依赖项的 peerDependency 选择哪个版本?

如何使用 yarn 2 (berry) 设置工作区存储库

如何使用 Yarn 2+ 列出每个公共工作区?

如何在 node-sass 工作的情况下使用 yarn install --offline?

使用 yarn 工作区和 react-router-dom v6 时如何正确继承上下文?

如何使用 Yarn 定位单个工作区?