npm3 引入了使用依赖项扁平化,以便node_modules
文件夹是扁平的。显然这并不总是正确的。我有我的应用程序,让我们命名它A
和我正在开发的模块,B
. 该模块具有gulp
依赖项和一些gulp
插件,例如gulp-rename
. 我期望在我的应用程序的文件夹中拥有gulp
和(因为它作为依赖项)。但这种情况并非如此。实际上是 in但它本身在文件夹中。gulp-rename
node-modules
A
B
gulp-rename
A/node_modules
gulp
A/node_modules/B/node_modules
任何线索为什么会发生这种情况?
更新
我已将问题缩小到这个特殊情况:
拥有A
我正在开发的应用程序和模块,B
. 该模块具有gulp
依赖项和 package.jsonbin
属性,定义如下(B
's package.json):
javascript
"bin" {
"gulp": "<some_valid_path>"
}
我期望在我的应用程序gulp
的node-modules
文件夹中A
拥有(因为它B
作为依赖项并且由于 npm3 依赖项扁平化)。但显然 npm 将其留在A/node_modules/B/node_modules
文件夹中。这是一种预期的行为,为什么?