为什么npm用这个package.json安装这么多模块?

时间:2015-10-08 18:48:23

标签: node.js npm

我最近将npm更新到版本3.3.3,然后开始了一个新项目。我的package.json如下:

{
  "name": "my project",
  "description": "my description",
  "version": "1.0.0",
  "license": "MIT",
  "devDependencies": {
    "gulp": "^3.8.11",
    "gulp-uglify": "^1.4.1",
    "gulp-watch": "^4.1.1",
    "gulp-rename": "^1.2.2",
    "gulp-concat": "^2.5.2",
    "gulp-autoprefixer": "^2.1.0",
    "gulp-sass": "^1.3.3",
    "browser-sync": "^2.7.13"
  }
}

执行npm install后,我在node_modules目录中看到352个已安装的模块。在更新npm之前,我只有10-15个已安装的模块使用非常相似的package.json(带有一些额外的依赖项)用于另一个项目。

所以问题是,为什么新版本的npm安装了这么多模块,我能以某种方式改变它的行为吗?

1 个答案:

答案 0 :(得分:4)

这是npm@3的核心功能之一:如果可能,您的依赖项的所有依赖项现在都安装在同一个顶级node_modules目录中。

来自the changelog

  

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

     

这有望消除大多数情况,其中Windows用户最终使用的路径对于Explorer和其他标准工具来说太长了。

没有办法禁用它。