【发布时间】:2018-06-01 03:04:54
【问题描述】:
我有一个 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 preinstall 然后撤消更改。这行得通,但有时可能有点不稳定,尤其是在向shrinkwrap 解释所有这些时。
如果我可以 npm i --allDevDepsFromDeps 并且它会安装我的所有依赖项 dev 依赖项,那就太好了。
我还缺少其他解决方案吗?
【问题讨论】:
-
我还没有使用过monorepo,但是你没有跨包的不同版本的依赖关系不是最大的好处/目标之一吗?您有 2 个包使用不同版本的依赖项这一事实似乎使这些包无法进入 monorepo - 也许我错了。