node.js - 安装我的依赖项的开发依赖项
问题描述
我有一个 monorepo,其中有一个/packages
包含许多包的文件夹。
我可以使用npm i ./packages
或者npm 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
atpreinstall
然后撤消更改。这可行,但有时可能有点不稳定,尤其是在向shrinkwrap
.
如果我能npm i --allDevDepsFromDeps
安装我的所有依赖项开发依赖项,那就太好了。
我还缺少其他解决方案吗?
解决方案
我看不出你想在那里实现什么,不是用于开发的 devDepencies 吗?
如果您想为不同的包提供不同的版本,请不要将它们放在根目录中,而是放在每个包中。
问题是,如果我安装这些软件包,我不会获得开发依赖项。
您应该将这些包视为“生产”/“捆绑”包,在这种情况下您不需要开发依赖项。
例如,当您在 @pkg/A 上工作时,它将有自己的 devDep,但如果您在依赖于 @pkg/A 的 @pkg/B 上工作,@pkg/A 应该是生产/捆绑版本(没有 devDeps)。
也许你应该看看bundledDependencies
or peerDependencies
,这可能对你有帮助。
推荐阅读
- intellij-idea - 带有 Intellij 的 Google 计算引擎
- node.js - 使用值而不是控制台日志记录
- c++ - 在构造函数中初始化字符串成员的首选方法是什么?
- ios - 我们可以在 UILabel 上显示 HTML 表格吗(属性文本)
- c++ - < 标记之前的预期初始化程序 - 结构和模板
- html - 如何将 google vr 视图添加到网页?
- r - 带有 ggplot 和特殊条形顺序的分组条形图
- node.js - 如何在 facebook 护照 startegy 上获取大小图片配置文件
- python - 在 django 的查询字符串中使用传递的参数作为值
- python - ImageDataGenerator 是否会向我的数据集添加更多图像?