安装我的依赖项的dev依赖项

时间:2018-06-01 03:04:54

标签: node.js npm lerna

我有一个monorepo,我有一个包含很多包的/packages文件夹。

如果已使用文件指针指定了npm i ./packagesnpm i,我可以使用它。

看起来像这样:

  "dependencies": {
    "@reggi/command": "file:packages/command",
    "@reggi/dep-merge": "file:packages/dep-merge",
    "@reggi/dep-merge-cli": "file:packages/dep-merge-cli",
    "@reggi/dep-pointer": "file:packages/dep-pointer"
  }

问题是,如果我安装这些软件包,我就不会得到dev依赖项。

我真正想要的是安装这些依赖项的devDependencies

lerna一个开创了monorepos使用率的流行工具,建议你应该在root包中添加这些包的所有devDependencies。这个问题是它消除了两个包依赖于给定dev依赖的不同版本的能力。

我所做的是创建了一个脚本,将所有devDependencies合并到dependencies preinstall,然后取消更改。这种方法有效,但有时可能会有点不稳定,特别是在向shrinkwrap解释所有这些时。

如果我只能npm i --allDevDepsFromDeps并且它会安装我的所有依赖项开发依赖项,那就太好了。

我还缺少其他解决方案吗?

1 个答案:

答案 0 :(得分:0)

我看不到您要达到的目标,不是devDepencies用于...开发吗?

如果您想为不同的软件包使用不同的版本,请不要将它们放在根目录中,而是放在每个软件包中。

  

问题在于,如果我安装了这些软件包,我不会获得开发依赖。

您应该将这些软件包视为“生产” /“捆绑”软件包,在这种情况下,您不需要开发依赖项。

例如,当您使用@ pkg / A时,它将具有自己的devDep,但是如果您使用依赖于@ pkg / A的@ pkg / B,则@ pkg / A应该是生产/捆绑版本(没有devDeps)。

也许您应该看看bundledDependenciespeerDependencies,这可能会对您有所帮助。