Подтвердить что ты не робот

Почему установка одного пакета 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 слева, затем

4b9b3361

Ответ 1

Это правильно, не волнуйтесь. Вы по-прежнему устанавливаете пакеты локально, только структура каталогов выглядит несколько иначе. Это поведение, которое изменилось в версии npm v3.0.0: теперь все зависимости зависимостей устанавливаются непосредственно в папке node_modules (поскольку это не вызывает конфликтов версий). Это значительно уменьшает размер файла.

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

Плоский, плоский, плоский!

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