Почему бы вам не использовать параметр `--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)