npm node_modules没有正确嵌套?

mas*_*wok 9 npm

使用npm时我遇到了意想不到的行为.例如,使用命令安装express时:

npm install express
Run Code Online (Sandbox Code Playgroud)

我希望在"node_modules"目录中创建一个名为"express"的文件夹,并且它的依赖项将安装在该文件夹中的"node_modules"子目录中.

我所看到的是正在创建"express"文件夹,但它的所有依赖项都被添加到我的项目文件夹中的根"node_modules"目录(与express相同的级别),而不是嵌套在"express"文件夹中.

为什么会这样?(使用npm v3.3.5)

JMM*_*JMM 13

这是npm @ 3的设计更改,默认情况下会进行重复数据删除.看到:

扁平,扁平!

您的依赖项现在将最大程度地安装.在可能的情况下,所有依赖项及其依赖项和它们的依赖项都将安装在项目的node_modules文件夹中而不进行嵌套.当两个(或更多)模块具有冲突的依赖关系时,您将只看到彼此嵌套的模块.

https://github.com/npm/npm/blob/ff47bc138e877835f1c0f419fea5f5672110678a/CHANGELOG.md#flat-flat-flat

https://github.com/npm/npm/issues/6912