npm将所有依赖关系和子依赖关系放在同一个文件夹中

我有一个package.json文件,在我的项目中有大约20个依赖项。 当我做

npm install 

它将所有依赖关系和子依赖关系置于最顶层的node_modules目录中。 它包含数百个模块,当它只应该是我的20个。子依赖项应该在我的主依赖项下的node_module目录中,但是它已经创build了一个扁平的结构。

我在Ubuntu 14.04上使用npm 3.5.4和节点0.10.41

任何人都可以帮助我使用正确的树结构来安装模块吗?

编辑—–添加我的packages.json文件:

  { "name": "lms", "version": "1.0.0", "main": "app.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "license": "ISC", "dependencies": { "aliasify": "^1.8.0", "angular": "^1.4.7", "angular-animate": "^1.4.7", "angular-aria": "^1.4.7", "angular-material": "^0.11.4", "angular-resource": "^1.4.7", "angular-ui-router": "^0.2.15", "angular-ui-sortable": "^0.13.4", "backbone": "^1.2.3", "bootstrap": "^3.3.5", "browser-sync": "^2.9.12", "browserify": "^12.0.1", "browserify-ngannotate": "^1.0.1", "del": "^2.1.0", "eslint": "^1.8.0", "eslint-config-defaults": "^7.1.1", "font-awesome": "^4.5.0", "gulp": "^3.9.0", "gulp-clean": "^0.3.1", "gulp-concat": "^2.6.0", "gulp-connect": "^2.2.0", "gulp-connect-php": "0.0.7", "gulp-eslint": "^1.1.1", "gulp-minify-css": "^1.2.1", "gulp-ng-annotate": "^1.1.0", "gulp-open": "^1.0.0", "gulp-sass": "^2.1.0", "gulp-uglify": "^1.4.2", "jquery": "^2.1.4", "jquery-ui": "^1.10.5", "lodash": "^3.10.1", "merge-stream": "^1.0.0", "ng-backbone": "file:local_node_modules/ng-backbone", "vinyl-buffer": "^1.0.0", "vinyl-source-stream": "^1.1.0" }, "browserify": { "transform": [ "aliasify" ] }, "aliasify": { "aliases": { "underscore": "lodash" } } } 

这是打算的行为。 由于版本3 npm试图去重复依赖关系,尽可能使用扁平树。

请参阅https://docs.npmjs.com/how-npm-works/npm3