为什么在将依赖项添加到根工作区package.json时yarn会发出警告

时间:2018-07-08 19:16:18

标签: yarnpkg yarn-workspaces

每当我向工作区项目的根目录添加依赖项时:

例如

yarn add assets-webpack-plugin -D

我收到以下错误:

  

运行此命令会将依赖关系添加到工作空间的根目录,而不是工作空间本身,这可能不是您想要的-如果您确实想要,请通过再次使用-W标志(或- -ignore-workspace-root-check)。

另一种方法是将其添加到需要它的每个项目中,然后您将遇到每个项目具有不同的依赖项和锁定文件的问题。

2 个答案:

答案 0 :(得分:4)

如果您在package.json中声明了“工作区”;您选择了工作区,并且设置必须正确。仅在使用单仓库时,这才有意义。与此相关的是,mono-repo是一个带有“ root” package.json的大型仓库,其中声明了工作区以及dev-dependencies。在其中将是其他“程序包”(具有自己的package.json,但没有自己的存储库的项目)。

当您要将软件包添加到那些“工作区”(请参见https://yarnpkg.com/lang/en/docs/workspaces/)或“软件包”时,并且您正在从根文件夹进行工作,则必须指定将Yarn操作作为目标的工作区。

如果它是根的dev-dependency,则这不是问题。因为假定您的“根”项目将没有它自己的“生产”依赖项,所以它们只能在工作区中。如果这不是开发人员依赖性,并且您未指定工作区(https://yarnpkg.com/en/docs/cli/workspace),那么您将看到警告以及如何覆盖它。

答案 1 :(得分:2)

假设您正在处理某些项目,并且已将所有项目放置在目录中。假设它是开发目录。每个项目在开发目录中都有其自己的工作空间(目录)。在开发目录(工作区根目录)中运行yarn add package-name时,这意味着该依赖关系将用于开发目录中的所有项目(工作区)。最好在其自己的工作区中管理每个项目的依赖关系,以便能够完全独立于开发目录中的其他项目来管理每个项目。例如,如果您要将一个项目移动到另一台开发机器上,则可以轻松地从开发目录中剪切该项目并将其移动到所需的机器上。 Yarn警告您将依赖项添加到特定项目(工作区),或者注意将依赖项添加到工作区根目录的副作用。