Слишком много модулей npm устанавливаются после выполнения "npm install"

Мой package.json:

{
  "name": "thumbnaillist-gulp",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "browserify": "^12.0.1",
    "gulp": "^3.9.0",
    "gulp-concat": "^2.6.0",
    "gulp-react": "^3.1.0",
    "gulp-util": "^3.0.7",
    "react": "^0.13.3",
    "react-script-loader": "0.0.1",
    "reactify": "^1.1.1",
    "vinyl-source-stream": "^1.1.0",
    "watchify": "^3.6.1"
  }
}

Странно то, что после выполнения "npm install", помимо модулей, перечисленных в поле зависимостей, также установлены другие модули, такие как

drwxr-xr-x  14 xxx  wheel   476B Nov 18 18:41 acorn
drwxr-xr-x   7 xxx  wheel   238B Nov 18 18:41 amdefine
drwxr-xr-x   6 xxx  wheel   204B Nov 18 18:41 ansi-green
drwxr-xr-x   6 xxx  wheel   204B Nov 18 18:41 ansi-regex
drwxr-xr-x   6 xxx  wheel   204B Nov 18 18:41 ansi-styles
drwxr-xr-x   6 xxx  wheel   204B Nov 18 18:41 ansi-wrap
drwxr-xr-x   6 xxx  wheel   204B Nov 18 18:41 anymatch
drwxr-xr-x   9 xxx  wheel   306B Nov 18 18:41 archy
drwxr-xr-x   6 xxx  wheel   204B Nov 18 18:41 arr-diff
drwxr-xr-x   6 xxx  wheel   204B Nov 18 18:41 arr-flatten
drwxr-xr-x   5 xxx  wheel   170B Nov 18 18:41 array-differ
drwxr-xr-x   8 xxx  wheel   272B Nov 18 18:41 array-filter
drwxr-xr-x   9 xxx  wheel   306B Nov 18 18:41 array-map
drwxr-xr-x   9 xxx  wheel   306B Nov 18 18:41 array-reduce
drwxr-xr-x   6 xxx  wheel   204B Nov 18 18:41 array-slice
drwxr-xr-x   5 xxx  wheel   170B Nov 18 18:41 array-uniq
drwxr-xr-x   6 xxx  wheel   204B Nov 18 18:41 array-unique
drwxr-xr-x   6 xxx  wheel   204B Nov 18 18:41 arrify
drwxr-xr-x   8 xxx  wheel   272B Nov 18 18:41 asn1.js
drwxr-xr-x  10 xxx  wheel   340B Nov 18 18:41 assert
drwxr-xr-x  10 xxx  wheel   340B Nov 18 18:41 ast-types
drwxr-xr-x   9 xxx  wheel   306B Nov 18 18:41 astw
drwxr-xr-x   9 xxx  wheel   306B Nov 18 18:41 async-each
drwxr-xr-x  11 xxx  wheel   374B Nov 18 18:41 balanced-match
drwxr-xr-x   8 xxx  wheel   272B Nov 18 18:41 base62
drwxr-xr-x   9 xxx  wheel   306B Nov 18 18:41 base64-js
drwxr-xr-x   6 xxx  wheel   204B Nov 18 18:41 beeper
drwxr-xr-x   6 xxx  wheel   204B Nov 18 18:41 binary-extensions
drwxr-xr-x  10 xxx  wheel   340B Nov 18 18:41 bn.js
drwxr-xr-x   7 xxx  wheel   238B Nov 18 18:41 brace-expansion
drwxr-xr-x   7 xxx  wheel   238B Nov 18 18:41 braces
drwxr-xr-x   7 xxx  wheel   238B Nov 18 18:41 brorand
drwxr-xr-x  13 xxx  wheel   442B Nov 18 18:41 browser-pack
drwxr-xr-x   7 xxx  wheel   238B Nov 18 18:41 browser-resolve
drwxr-xr-x  12 xxx  wheel   408B Nov 18 18:41 browserify
drwxr-xr-x  17 xxx  wheel   578B Nov 18 18:41 browserify-aes
drwxr-xr-x   8 xxx  wheel   272B Nov 18 18:41 browserify-cipher
drwxr-xr-x   7 xxx  wheel   238B Nov 18 18:41 browserify-des
drwxr-xr-x   8 xxx  wheel   272B Nov 18 18:41 browserify-rsa
drwxr-xr-x  16 xxx  wheel   544B Nov 18 18:41 browserify-sign
drwxr-xr-x   8 xxx  wheel   272B Nov 18 18:41 browserify-zlib
drwxr-xr-x  11 xxx  wheel   374B Nov 18 18:41 buffer
drwxr-xr-x  11 xxx  wheel   374B Nov 18 18:41 buffer-xor

Какой-нибудь намек на это? Является ли мой NPM нарушенным? Или я не написал package.json правильным образом.

Ответ 1

Нет ничего плохого, NPM теперь устанавливает все зависимости к папке корневых модулей, если нет конфликта версий. Все эти другие модули, которые вы видите, зависят от установленных вами модулей.

Из примечаний к выпуску NPM 3.0.0:

Теперь ваши зависимости будут установлены максимально плоскими. Насколько возможно, все ваши зависимости, их зависимости и их зависимости будут установлены в вашей папке проекта node_modules без вложенности. Вы увидите только модули, вложенные под друг друга, когда два (или более) модуля имеют конфликтующие зависимости.

Ответ 2

Я надеюсь, что ответ Александра О'Мара полезен для вас. Если вы все еще хотите или для тех, кто хочет использовать зависимости вроде старой версии

вы можете использовать

npm install --legacy-bundling

Если вы всегда хотите использовать

npm set legacy-bundling = true

и использование может выполняться как обычно

npm install