Що роблять прапори --save з установкою npm


102

Я бачу інструкції з встановлення пакету з будь-яким із них

npm install <package_name>

або

npm install <package_name> --save

або

npm install <package_name> --save-dev

У чому різниця між цими варіантами?

Відповіді:


85

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 .


3
Це була головна відповідь для мого пошуку в Google на "npm --save flag". Будь ласка, розгляньте можливість оновлення з правильною інформацією, тобто, що за замовчуванням встановлено --save, а для того, щоб не оновлювати список залежностей у package.json
Jonas Rosenqvist

52

npm install вимагає 3 ексклюзивних, необов’язкових прапорів, які зберігають або оновлюють версію пакета у вашому основному пакеті.json:

-S, --save: Пакет з’явиться у ваших залежностях.

-D, --save-dev: Пакет з’явиться у ваших devDependencies.

-O, --save-optional: Пакет з’явиться у ваших необов’язкових залежностях.

При використанні будь-якого з наведених вище параметрів для збереження залежностей у файлі package.json існує додатковий, необов’язковий прапор:

-E, --save-exact: Збережені залежності будуть налаштовані з точною версією, а не за допомогою типового оператора напівдіапазону npm за замовчуванням. Крім того, якщо у вас є npm-shrinkwrap.json, він також буде оновлений.

<scope>не є обов’язковим. Пакет буде завантажено з реєстру, пов'язаного із зазначеним обсягом. Якщо жоден реєстр не пов'язаний із заданою областю, передбачається реєстр за замовчуванням. Див. Npm-scope.

Примітка: якщо ви не включите @ -symbol до імені вашої області, 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


51
Хоча --saveопція все ще працює, вона більше не потрібна - пакети тепер зберігаються у залежностях за замовчуванням . Логіка зараз обернена - якщо ви не хочете зберігати свій пакет, вам потрібно вказати--no-save
Coruscate5

Дякую, @ Coruscate5 точно відповів на моє запитання.
Kon

28

Чи не --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: Пакет з’явиться у ваших необов’язкових залежностях.

--no-save: Запобігає збереженню до залежностей.

При використанні будь-якого з наведених вище параметрів для збереження залежностей у файлі package.json є два додаткові, необов’язкові прапори:

-E, --save-дакладна: Збережені залежності будуть налаштовані з точною версією, а не за допомогою типового оператора npm діапазону semver range.

-B, --save-bundle: Збережені залежності також будуть додані до вашого списку bundleDependencies.


дякую за оновлену відповідь на висвітлення поточної ситуації
DrCord

Це прояснило мій давній сумнів. Дякуємо
Алок
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.