为什么安装一个npm包会在node_modules中添加许多子文件夹?

我已经更新了我用grunt项目使用的node / npm。

然而,当我现在想要添加一个包到一个项目myproject/ (比如npm install grunt-favicon )时,它似乎向myproject/node_modules/添加了数百个文件夹,而它只用来添加一个 – 通常以grunt作为前缀,比如node_modules/grunt-favicon

我对这些东西的了解是基本的,但是这些东西似乎是必需的依赖关系,甚至这些东西中的一些还有更多的依赖关系。

是不是应该在其他地方添加这些依赖关系? 如果是这样我怎么改正这个?

我使用npm 3.3.5node 4.1.1grunt-cli v0.1.13grunt v0.4.5

这个屏幕截图在左边显示~/.npm ,然后在右边显示~/.npm ~/myproject/node_modules

〜/ .npm在左边

这是正确的,不要担心。 你仍然在本地安装包,只是目录结构看起来有点不同。 这是在npm v3.0.0更改的一个行为:现在,所有依赖关系的依赖关系都直接安装在node_modules文件夹中(只要不会导致版本冲突)。 这大大减less了文件树的大小。

从npm 3.0.0发行说明 :

平坦,平坦,平坦!

现在您的依赖关系将被最大限度地安装。 只要有可能,所有的依赖关系,它们的依赖关系,以及它们的依赖关系都将被安装在项目的node_modules文件夹中,而不会嵌套。 当两个(或更多)模块具有冲突的依赖关系时,只能看到嵌套在另一个之下的模块。