Почему бы вам не использовать параметр `--save` для установки npm?

Я прочитал об использовании опции --save здесь, и в нем говорится, что он добавит установленный пакет в ваш файл package.json. Но почему это не автоматическое? Разве вы не хотите этого?

Я понимаю, что node_modules - это каталог, который фактически содержит код вашего пакета, а package.json - это ссылка/список всех пакетов, которые вы установили, чтобы, когда вы подталкиваете ее к репо, вы только надавите на него, а не на первое, чтобы сэкономить место.

Затем, когда другие люди клонируют или отключают ваше репо, они будут иметь package.json для ссылки и установки всех необходимых пакетов для работы вашего проекта.

Таким образом, разве вы не хотите, чтобы ваши пакеты находились в package.json, чтобы каждый мог получить то, что нужно?

Ответ 1

С менеджерами пакетов, такими как Bower или npm, я думаю, что --save не является автоматическим по следующим причинам:

  • Все зависимости не являются производственными зависимостями (см. --save-dev).
  • Иногда вам нужно протестировать пакет без изменения package.json.
  • Вы можете установить локально некоторые пакеты, которые ваши коллеги установили на глобальном уровне на своем компьютере.

Пакеты, установленные без --save, не рассматриваются как зависимости и хранятся отдельно. Вы можете легко обнаружить их как посторонние пакеты с помощью npm ls и немедленно удалить их с помощью npm prune.

Теперь, если вы считаете, что посторонние пакеты плохо, вы можете использовать --save каждый раз при установке нового пакета. По практическим соображениям, знайте, что вместо --save можно использовать ярлык -S. Более того, если вы часто забываете использовать этот параметр, вы можете определить псевдоним в своей оболочке.

Наконец, если вы используете Пряжа, обратите внимание, что команда yarn add добавит каждый пакет в качестве зависимости. Нет значка --save.

Ответ 2

Чтобы процитировать одного из поддерживающих npm:

В последние пару лет здесь немного изменилось, что делает части этой проблемы спорными: [...] Его [...] достаточно легко запустить npm config set save true в качестве конечных пользователей. Тем не менее, при создании --save по умолчанию все еще есть несколько грубых точек:

  • В то время как когнитивная нагрузка, связанная с необходимостью запоминать --save или --save-dev во время установки, вызывает раздражающее раздражение, она заставляет вас выбирать во время установки, является ли пакет dependency или devDependency.
  • Перемещение пакетов между разделами в package.json все еще немного сложнее, чем должно быть, что делает очистку после вещей, когда вы забываете указать, что somethi [ng] является devDependency. [...] Я не думаю, что это в наилучших интересах, в результате, чтобы все могли сохранить все по умолчанию.

(из https://github.com/npm/npm/issues/5108)