【问题标题】:Install the dev dependencies of my dependencies安装我的依赖项的开发依赖项
【发布时间】:2018-06-01 03:04:54
【问题描述】:

我有一个 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"
  }

问题是,如果我安装这些包,我不会获得开发依赖项。

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

lerna 是一个率先使用 monorepos 的流行工具,建议您应该在根包中为这些包添加所有devDependencies。这样做的问题是它消除了两个包依赖给定开发依赖项的不同版本的能力。

我所做的是创建一个脚本,将所有devDependencies 合并到dependencies preinstall 然后撤消更改。这行得通,但有时可能有点不稳定,尤其是在向shrinkwrap 解释所有这些时。

如果我可以 npm i --allDevDepsFromDeps 并且它会安装我的所有依赖项 dev 依赖项,那就太好了。

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

【问题讨论】:

  • 我还没有使用过monorepo,但是你没有跨包的不同版本的依赖关系不是最大的好处/目标之一吗?您有 2 个包使用不同版本的依赖项这一事实似乎使这些包无法进入 monorepo - 也许我错了。

标签: node.js npm lerna


【解决方案1】:

我看不出你想要在那里实现什么,devDepencies 不是用于...开发吗?

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

问题是,如果我安装这些包,我不会获得开发依赖项。

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

例如,当你在 @pkg/A 上工作时,它会有自己的 devDep,但是如果你在依赖于 @pkg/A 的 @pkg/B 上工作,@pkg/A 应该是生产/捆绑版本(不含 devDeps)。

也许你应该看看bundledDependenciespeerDependencies,这可能对你有帮助。

【讨论】:

    猜你喜欢
    • 2016-08-21
    • 2022-07-20
    • 2015-01-24
    • 2019-01-24
    • 1970-01-01
    • 2021-10-15
    • 2019-04-29
    • 2021-10-05
    • 2018-03-04
    相关资源
    最近更新 更多