【发布时间】:2020-04-25 17:38:48
【问题描述】:
我just discovered(为我自己)说 NPM 不像我过去使用的其他包管理系统那样工作。我对事物的基本理解是,我的每个依赖项也将有自己的 node_modules 文件夹和它自己的依赖项(并且,对于更新版本的 npm,只有在版本冲突时才会创建第二个 node_modules 文件夹)
这看起来很简洁,但我想知道 npm 是如何处理 -- sub-sub 的? -- 依赖冲突。我很抱歉没有更好地掌握语言——但这就是我的意思。
我想将 @foo/bar 的 3.0 版安装到我的项目中。
第二个包——我们称之为@second/package——我想安装@foo/bar的2.0版。
我现在了解 NPM 是如何实现的。 @second/package 将拥有自己的 node_modules 文件夹,其版本为 @foo/bar 2.0
./node_modules/@foo/bar # version 3.0
./node_modules/@second/package/node_modules/@foo/bar # version 2.0
然而——
我也想安装@zip/zap的8.0版。
但是@second/package 想要安装@zip/zap 的7.0 版。
而@foo/bar 的2.0 版想要安装@zip/zap 的6.0 版。
./node_modules/@foo/bar # version 3.0
./node_modules/@zip/zap # version 8.0
./node_modules/@second/package/node_modules/@foo/bar # version 2.0
./node_modules/@second/package/node_modules/@zip/zip # version 7.0
# where does version 6.0 of @zip/zap go?
@zip/zap 的 6.0 版在哪里结束? npm 是否创建了 第三层 级 node_module 文件夹,还是放弃并说它无法解析此依赖树?还是第三件事?还是我对 npm 的理解还有缺陷?
在我去弄清楚如何使用假包设置我自己的 npm 存储库来测试这一点之前,我认为最好先问一下。
【问题讨论】:
标签: node.js npm dependency-management