【发布时间】:2016-01-24 02:27:11
【问题描述】:
我刚刚升级到npm version 3,并注意到它所做的最大变化之一是它强制执行flat dependency tree。
您的依赖项现在将安装到最大平面。在可能的情况下,您的所有依赖项及其依赖项以及它们的依赖项都将安装在您项目的
node_modules文件夹中,并且没有嵌套。只有当两个(或更多)模块具有冲突的依赖关系时,您才会看到相互嵌套的模块。
例如如果包A依赖包B,当你npm install A你会得到这个文件结构:
--- root/
|--- node_modules/
|--- A/
|--- B/
代替版本 2 或更低版本的旧文件结构:
--- root/
|--- node_modules/
|--- A/
|--- node_modules/
|--- B/
我遇到的第一个(我肯定不是最后一个)问题是:
包 A 不知道 npm v3 的行为,并且依赖于包 B。但是 A 采用旧的 (v2) 文件结构,因为它的代码中有 node_modules/B,而不是正确的 ../node_modules/B。现在,来自 A 的代码将无法编译,因为它在错误的目录中寻找 B/。
如果我不想唠叨开发人员修复代码并等待 A 的更新,我想知道是否可以设置一个选项来强制安装 npm A 的依赖项位于其自己的 node_modules 文件夹中,与 npm v2 的做法相同。
【问题讨论】:
标签: module npm dependencies package dependency-management