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

时间:2015-10-05 14:32:41

标签: node.js path npm dependencies

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

但是,当我现在想要将一个包添加到项目myproject/(比如npm install grunt-favicon)时,它似乎会向myproject/node_modules/添加数百个文件夹,而它只用于添加一个 - 通常以node_modules/grunt-favicon之类的grunt为前缀。

我对这些事情的了解是基本的,但这些似乎是必需的依赖项,甚至其中一些项目还有更多的依赖项。

它不应该在其他地方添加这些依赖项吗?如果是这样,我该怎么纠正呢?

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

此屏幕截图左侧显示~/.npm,右侧显示~/myproject/node_modules

~/.npm on the left then

1 个答案:

答案 0 :(得分:30)

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

来自npm 3.0.0 release notes

  

扁平,平坦!

     

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