npm依赖安装,困惑

我有两个node.js / npm的安装,一个是1.4.28,一个是3.1.0

通过在package.json文件中部署相同的应用程序包含:

{ "name": "server", "version": "0.0.1", "description": "js server", "dependencies": { "async": "^1.3.0", "aws-sdk": "^2.1.36", "body-parser": "^1.13.2", "ejs": "^2.3.2", "express": "^4.13.1", "generic-pool": "^2.2.0", "multer": "^0.1.8", "mysql": "^2.7.0", "node-uuid": "^1.4.3", "nodemailer": "^1.4.0", "nodemailer-smtp-transport": "^1.0.3", "password-hash-and-salt": "^0.1.2", "pm2": "^0.14.3", "redis": "^0.12.1", "redis-sessions": "^0.3.9", "request": "^2.58.0", "socket.io": "^1.3.5", "winston": "^1.0.1", "yauzl": "^2.3.1" } } 

在版本1.4.28上,在没有任何node_modules目录的全新安装上运行npm install之后,如果填充了正确的所需模块:

在这里输入图像描述

而在3.1.0版本中,我得到了许多不应该被我需要的子依赖:

在这里输入图像描述

所以任何人都可以解释我发生了什么,为什么我把所有这些折扣都拉进去了? 我也试过 – 生产npm没有成功…

非常感谢 !

这是新的npm 3. *function。 从npm 博客 :

用npm @ 3,你的node_modules目录会变得更平坦。 所有的依赖关系和大部分的子依赖关系(和(子)+依赖关系)将在顶层彼此相邻。 只有在冲突的时候,模块才能在更深的层面上安装。 这对于Windows用户来说应该更容易一些。