Что такое опция --save для установки npm?

2040

Я видел некоторый учебник, где команда была:

npm install --save

Что означает --saveопция?

Не удалось найти ответ в Google.

Дмитрий
источник
32
@ --save: Package will appear in your dependencies.
Tom-
7
Вы можете использовать ярлыки -S и -D там -S это --save и -D это '--save-dev. --save (или просто -S): пакет появится в ваших зависимостях. --save-dev (или простой -D): пакет появится в ваших devDependencies.
Джил Эпштейн
5
@WiredPrairie спасибо, я пытался npm install (--help | -h | -help ..)и ничего.
Juliangonzalez
2
THX @Dmitri, у меня была та же проблема. Заходите на NPM и добавьте это на свою страницу MAN для своего инструмента
Erdinc Ay
67
Я не понимаю обоснования решения об удалении хотя бы одного упоминания об этом параметре со страницы документации и справки, не осуждая его, по крайней мере, с предупреждением в самом инструменте. Тем временем новички подвергаются этому через миллионы обучающих программ. Затем они пытаются выяснить, что он делает, и им приходится тратить 20 минут на просмотр документации, чтобы в конечном итоге прочитать историю npm в stackoverflow. Как ни странно, предотвращение такого рода огромной траты времени (если популярность вопроса является каким-либо показателем) является одной из целей документации.
Майкл Экока

Ответы:

2479

Обновление npm 5:

Начиная с npm 5.0.0 , установленные модули по умолчанию добавляются как зависимости, поэтому --saveопция больше не нужна. Другие параметры сохранения все еще существуют и перечислены в документации для npm install.

Оригинальный ответ:

До версии 5 NPM просто устанавливал пакет node_modulesпо умолчанию. Когда вы пытались установить зависимости для вашего приложения / модуля, вам нужно будет сначала установить их, а затем добавить их (вместе с соответствующим номером версии) в свой dependenciesраздел package.json.

--saveВариант поручил НПМ включить пакет внутреннюю часть dependenciesсекции вашего package.jsonавтоматически, тем самым экономя дополнительный шаг.

Кроме того, существуют дополнительные опции --save-devи --save-optionalкоторые экономят пакет под devDependenciesи optionalDependencies, соответственно. Это полезно при установке пакетов только для разработки, например, gruntили вашей библиотеки тестирования.

voithos
источник
141
Серьезно, это где-нибудь задокументировано? Я не смог найти его в Google или в npmсправке.
Кристиан Тернус
112
Было бы хорошо, если бы документация для этого обнаруживалась, когда npm install --helpиспользовалась.
Марк Стосберг
11
@jimsmith: Начиная с npm 5.0 это значение по умолчанию.
voithos
3
Изменяет ли «npm update» в NPM 5 файл package.json по умолчанию?
Игорь Окороков
6
@voithos Для меня NPM 5 обновляет версии пакетов в package.json. Чтобы избежать этого, мне нужно запустить 'npm update --no-save'
Игорь Окороков
219

Чтобы добавить пакет в зависимости:

npm install my_dep --save

или

npm install my_dep -S

или

npm i my_dep -S

Добавить пакет в devDependencies

npm install my_test_framework --save-dev

или

npm install my_test_framework -D

или

npm i my_test_framework -D

package.json введите описание изображения здесь

Джо Л.
источник
30
будьте осторожны при использовании сокращенных версий, так -S -Dкак они должны быть прописными. Я всегда делаю эту ошибку, и npm не жалуется и не добавляет ее в package.json
Мюррей Виннес
7
Это не жалуется, потому что -s(нижний регистр) для --silentопции, и -dдля информации уровня журнала, которые являются допустимыми ярлыками.
Танви
131

Он ничего не сделает, если у вас нет package.jsonфайла. Начните с запуска, npm initчтобы создать его. Затем звонит npm install --saveили npm install --save-devили npm install --save-optionalобновит package.jsonсписок ваших зависимостей.

Ник Реталлак
источник
37
Только что выяснил, что работает задним числом (кажется). Вы можете запустить свой npm install --save-devпервый, затем npm init и ваш package.json будет заполнен.
Джейкоб Ван
20

в соответствии с NPM Doc

введите описание изображения здесь

Похоже, что при запуске npm install package_nameзависимость пакета автоматически добавляется в package.json, верно?

ROROROOROROR
источник
1
Я предполагаю, что --no-save - использовать, когда вы хотите, чтобы функциональность вроде npm <5
Abhiroj Panwar
Я вижу, npm config ls -lпоказывает, что по умолчанию параметры save-xxx имеют значение false, только save соответствует true.
ROROROOROROR
Похоже, что npm не выдаст никакой ошибки, если вы укажете опцию «не существует», например --save-xxxxxx. Он просто игнорирует это, и поведение по умолчанию --save-prod повлияет. Возможно --save происходит из какой-то старой версии npm.
Леон
13

Вы также можете использовать -S, -Dили -Pкоторые являются эквивалентом сохранения пакета на зависимость приложения, в зависимости Dev или прод зависимости. Смотрите другие ярлыки NPM ниже:

-v: --version
-h, -?, --help, -H: --usage
-s, --silent: --loglevel silent
-q, --quiet: --loglevel warn
-d: --loglevel info
-dd, --verbose: --loglevel verbose
-ddd: --loglevel silly
-g: --global
-C: --prefix
-l: --long
-m: --message
-p, --porcelain: --parseable
-reg: --registry
-f: --force
-desc: --description
-S: --save
-P: --save-prod
-D: --save-dev
-O: --save-optional
-B: --save-bundle
-E: --save-exact
-y: --yes
-n: --yes false
ll and la commands: ls --long

Этот список ярлыков можно получить, выполнив следующую команду:

$ npm help 7 config
DevWL
источник
7

Начиная с npm 5 более удобно использовать --save-prod(или -P), чем --saveделать то же самое, что указано в npm install . Пока --saveвсе еще работает, если предусмотрено.

themefield
источник
Это должно пойти к вершине, чтобы спасти нас всех вариации чтения глазного яблока, противоречия и перехваты потока. SO должен поощрять краткие ответы с действительными URL, чтобы мы могли избежать CRUD и продолжить нашу работу. (Quora имеет аккуратный «Соответствует ли этот ответ» и т. Д., И я даже раньше предлагал SO сделать это) -5.0, отправив наши головы на спин.
killjoy
6

Начиная с npm 5, npm теперь будет сохраняться по умолчанию. В случае, если вы хотите, чтобы npm работал по старому принципу (без автосохранения) так, как он работал в предыдущих версиях, вы можете обновить опцию config, чтобы включить автосохранение, как показано ниже.

npm config set save false

Чтобы получить текущую настройку, вы можете выполнить следующую команду:

npm config get save

Источник: https://blog.pusher.com/what-you-need-know-npm-5/

Раджеш Кумар
источник
6

npm install package_x --save

Данный пакет (package_x) будет сохранен в package.json внутри зависимостей. если вы добавите

npm install <<package_x>> --save-dev

тогда он будет сохранен внутри devDependencies .

Низам Дин
источник
12
Что способствует ваш ответ, что другие ответы еще не охватили?
Педро А
@Pedro A - Я подозреваю, что парень переписывает то, что он только что прочитал; затем его друзья отдают ему голоса.
IAM_AL_X
3

Самый простой (и более удивительный) способ добавить зависимости в ваш package.json - это сделать это из командной строки, пометив команду установки npm с помощью --save или --save-dev, в зависимости от того, как вы хотите использовать эту зависимость.

Рубин Бхандари
источник
3

npm install --saveили npm install --save-devпочему мы выбираем один из двух вариантов при установке пакета в нашем проекте.

из приведенных выше ответов ясно, что npm install --saveдобавится запись в dependencyполе в pacakage.jsonфайле, а другая в dev-dependency.

Поэтому возникает вопрос, зачем нам нужно вводить наш установочный модуль в файл pacakge.json, потому что всякий раз, когда мы регистрируем код gitили передаем наш код кому-то, мы всегда даем его или проверяем без него, node-modulesпотому что он очень большой по размеру и также доступен по адресу общее место, чтобы избежать этого, мы делаем это.

Итак, как другой человек получит все модули, которые специально или необходимы для этого проекта, так что ответы - это from the package.jsonфайл, в котором есть запись всех необходимых пакетов для запуска или разработки этого проекта.

поэтому после получения команды code we simply need to run the npm installона прочитает файл package.json и установит необходимые необходимые пакеты.

Солнечный Гоэль
источник
2

Npm я (имя пакета) - сохранить

Проще говоря, используя приведенную выше команду, нам не нужно будет записывать имя пакета в ваш файл package.json, он автоматически добавит его имя и зависимость от версии, которая понадобится вам в то время, когда вы приступите к производству или настройке в другой раз.

npm поможет установить

Приведенная выше команда поможет найти дополнительную опцию и исправить def.shown на рис. введите описание изображения здесь

Нитин.
источник