Почему установка одного пакета npm добавляет много подпапок в node_modules?
Я обновил node/npm, который я использую с моими грантовыми проектами.
Однако, когда я теперь хочу добавить пакет в проект myproject/
(скажем, npm install grunt-favicon
), он добавляет сотни папок к myproject/node_modules/
, тогда как он используется только для добавления одного - обычно с префиксом grunt, например node_modules/grunt-favicon
.
Мои знания об этих вещах носят основополагающий характер, но, похоже, они требуют зависимостей, и даже некоторые из этих элементов имеют еще больше зависимостей.
Не следует ли добавлять эти зависимости в другое место? Если да, то как это исправить?
Я использую npm 3.3.5
, node 4.1.1
, grunt-cli v0.1.13
и grunt v0.4.5
.
На этом снимке экрана отображается ~/.npm
слева, а затем ~/myproject/node_modules
справа
![~/.npm слева, затем]()
Ответы
Ответ 1
Это правильно, не волнуйтесь. Вы по-прежнему устанавливаете пакеты локально, только структура каталогов выглядит несколько иначе. Это поведение, которое изменилось в версии npm v3.0.0: теперь все зависимости зависимостей устанавливаются непосредственно в папке node_modules
(поскольку это не вызывает конфликтов версий). Это значительно уменьшает размер файла.
Из примечаний к выпуску npm 3.0.0:
Плоский, плоский, плоский!
Теперь ваши зависимости будут установлены максимально плоскими. Насколько возможно, все ваши зависимости, их зависимости и их зависимости будут установлены в вашей папке проекта node_modules без вложенности. Вы увидите только модули, вложенные под друг друга, когда два (или более) модуля имеют конфликтующие зависимости.