Установка NPM без вложенных зависимостей

#node.js #npm

#node.js #npm

Вопрос:

У меня возникли небольшие проблемы с npm. Тогда я создаю новую папку для своего приложения npm init . Я хочу добавить gulp к своим зависимостям, поэтому я запускаю npm install --save-dev gulp . Теперь, когда он создает папку node_module, я ожидал, что она будет содержать папку gulp. Но что он делает, так это устанавливает все пакеты, подобные этому:

скриншот иерархии папок node_modules

Поскольку я начинаю изучать npm, мне интересно, является ли это нормальным поведением? Если да, есть ли способ организовать это?

Большое спасибо

Комментарии:

1. Знаете ли вы о --save , --save-dev и -g ? Вы хотите установить gulp глобально?

2. @iLuvLogix Я бы на самом деле не стал устанавливать что-либо глобально в эти дни. Усложняет управление версиями.

3. @AKX отсюда и мой вопрос 😉

4. На самом деле я читал об этом. Я понял, что --save-dev установите пакет под devDependencies , так что это то, что я хочу. Но я не понимаю, почему npm install устанавливает все эти зависимости, поскольку я указываю gulp только в моем package.json devDependencies

Ответ №1:

Да, сглаженное node_modules дерево является нормальным поведением в наши дни (уже несколько лет). Если вы действительно действительно этого не хотите, вы могли бы попробовать npm install --legacy-bundling , но… пожалуйста, не делайте этого. 🙂

Вам не нужно изучать node_modules или беспокоиться о его организации (если что-то не сломается), это сделано за вас npm или yarn (или каким бы менеджером пакетов вы ни пользовались).

Вы все еще можете найти вложенные модули здесь и там в случае, если они несовместимы друг с другом — например, если package1 зависит от tool версии 1 и package2 зависит от tool версии 2, вы можете получить

 node_modules/
  package1/
  package2/
    node_modules/
      tool/       <- version 2
  tool/           <- version 1
  

но все равно, все (обычно) просто работает.

Комментарии:

1. Спасибо за ответ! Просто кажется странным, что он добавляет все эти пакеты, когда вы указываете только одну devDependencies.

2. Добро пожаловать в разработку JavaScript в 2010-х годах … 🙂 Смотрите npm.anvaka.com/#/view/2d/gulp для визуализации вашего случая.

3. Вау, это круто! Итак, если я правильно понимаю этот инструмент, gulp зависит от всех этих пакетов, которые установлены в моей папке node_modules, вот почему они здесь?

4. Да, это именно тот случай.