Я вижу инструкции по установке пакета с
npm install <package_name>
или
npm install <package_name> --save
или
npm install <package_name> --save-dev
В чем разница между этими вариантами?
Ответы:
npm install <package_name> --save
устанавливает пакет и обновляет зависимости в вашем package.json. Поскольку этот вопрос был задан, в npm было внесено изменение, которое --save
стало параметром по умолчанию, поэтому вам не нужно использовать его --save
для обновления зависимостей.
npm install <package_name> --no_save
устанавливает пакет, но не обновляет зависимости, перечисленные в вашем package.json.
npm install <package_name> ---save-dev
обновляет devDependencies
в вашем пакете. Они используются только для локального тестирования и разработки.
Вы можете узнать больше на https://docs.npmjs.com/getting-started/using-a-package.json .
npm install принимает 3 эксклюзивных необязательных флага, которые сохраняют или обновляют версию пакета в вашем основном package.json:
-S, --save
: Пакет появится в ваших зависимостях.
-D, --save-dev
: Пакет появится в вашем devDependencies.
-O, --save-optional
: Пакет появится в ваших optionalDependencies.
При использовании любого из вышеперечисленных параметров для сохранения зависимостей в package.json есть дополнительный необязательный флаг:
-E, --save-exact
: Сохраненные зависимости будут настроены с точной версией, а не с использованием оператора npm диапазона semver по умолчанию. Кроме того, если у вас есть npm-shrinkwrap.json, он также будет обновлен.
<scope>
не является обязательным. Пакет будет загружен из реестра, связанного с указанной областью. Если реестр не связан с данной областью, предполагается реестр по умолчанию. См. Npm-scope.
Примечание: если вы не включите символ @ в имя своей области, npm вместо этого интерпретирует это как репозиторий GitHub, см. Ниже. Имена областей действия также должны сопровождаться косой чертой.
Примеры:
npm install sax --save
npm install githubname/reponame
npm install @myorg/privatepackage
npm install node-tap --save-dev
npm install dtrace-provider --save-optional
npm install readable-stream --save --save-exact
Примечание. Если <name>
в текущем рабочем каталоге есть файл или папка с именем , он попытается установить их, и будет пытаться получить пакет по имени только в том случае, если он недействителен.
(из официальных документов) https://docs.npmjs.com/cli/install
--save
опция по-прежнему работает, она больше не требуется - теперь пакеты по умолчанию сохраняются в зависимостях . Теперь логика обратная - если вы не хотите сохранять свой пакет, вам нужно указать--no-save
Не --save
флаг больше не служит цели.
Ранее, как отмечалось в других ответах, --save
флаг обновлял зависимости в package.json
файле проекта , но npm install
теперь по умолчанию включает эту функцию.
На этом этапе, если вы хотите предотвратить npm install
сохранение зависимостей, вы должны использовать --no-save
флаг.
Спасибо Coruscate5 за упоминание этого в своем комментарии .
Дополнительная информация в документации по npm-install :
npm install по умолчанию сохраняет все указанные пакеты в зависимости. Кроме того, вы можете контролировать, где и как они сохраняются с помощью некоторых дополнительных флагов:
-P, --save-prod: пакет появится в ваших зависимостях. Это значение по умолчанию, если не указаны -D или -O.
-D, --save-dev: пакет появится в ваших devDependencies.
-O, --save-optional: пакет появится в ваших optionalDependencies.
--no-save: предотвращает сохранение в зависимости.
При использовании любого из вышеперечисленных параметров для сохранения зависимостей в package.json есть два дополнительных необязательных флага:
-E, --save-точный: сохраненные зависимости будут настроены с точной версией, а не с использованием оператора диапазона npm по умолчанию semver.
-B, --save-bundle: сохраненные зависимости также будут добавлены в ваш список bundleDependencies.