Что означает -save-dev в npm install grunt --save-dev

277

Я только начал использовать Grunt.js . Это довольно сложно настроить, и я нахожусь в стадии создания package.jsonфайла.

После этого урока говорится, что есть 3 способа создать package.jsonфайл.

Первое, чтобы сделать npm install grunt --save-dev

Но что --save-devзначит? Я пытался искать, но это тщетно.

Vennsoh
источник
Я думаю, что мне удается найти некоторые ответы. gruntjs.com/getting-started - npmjs.org/doc/json.html#devDependencies
Vennsoh
ссылка на учебник не работает
SteveC

Ответы:

317

--save-dev: пакет появится в ваших devDependencies.

Согласно npm установите документы .

Если кто-то планирует загрузить и использовать ваш модуль в своей программе, то он, вероятно, не хочет или не нуждается в загрузке и создании используемой вами среды внешнего тестирования или документации.

Другими словами, при запуске npm installбудут установлены devDependencies вашего проекта, но не будут установлены devDependencies для любых пакетов, от которых зависит ваше приложение; кроме того, другие приложения, имеющие ваше приложение в качестве зависимости, не должны устанавливать ваши devDependencies. Такие модули должны быть необходимы только при разработке приложения (например, grunt, mocha и т. Д.).

В соответствии с package.json документами

Изменить: Попытаться визуализировать, что npm installделает:

  • yourproject
    • зависимость установлена
      • зависимость установлена
        • зависимость установлена
        • devDependency НЕ установлен
      • devDependency НЕ установлен
    • devDependency установлен
      • зависимость установлена
      • devDependency НЕ установлен
Андреас Халтгрен
источник
2
по умолчанию он не будет устанавливаться с зависимостями dev, но как я могу установить с тогда? npm install --devфлаг?
StanleyZheng
4
@stanzheng Я не уверен, что вам нужно знать. Если вы находитесь в проекте и работаете npm install, devDependencies проекта также будут установлены. Вам не нужно устанавливать devDependencies зависимости. Если вы хотите разработать пакет npm, вы бы git clone xxxзапустили этот проект и запустили npm installего.
Андреас Халтгрен
3
«devDependencies для зависимостей вашего приложения не будут установлены при запуске npm install» неверно. Если у меня есть package.json, и он содержит только «devDependencies» с моими пакетами npm, и я затем набираю «npm install», эти «devDependecies» устанавливаются.
ядро
6
Я пытался понять, и я не понял. Затем я попытался понять визуализацию, но не смог. Что означает каждый пункт с маркером? Папка? Что означает зачеркнутый предмет? Несуществующий каталог? Если это правда, как вы можете перечислить исчерпывающе несуществующие вещи?
Рафаэль Эйнг
8
Чтобы уточнить, если npm installв вашем проекте выполняется, все devDependencies в package.json будут установлены, но если вы упакуете свой проект как новый пакет npm и опубликуете его, когда кто-то еще установит ваш пакет с установкой npm, devDependencies не будет установлен в их системе. Это правильно? @stanzheng или вы можете запустить npm install --production, чтобы установить все в package.json, кроме dev-зависимостей
rwilson04
99

Существует (как минимум) два типа зависимостей пакетов, которые вы можете указать в файлах package.json:

  1. Те пакеты, которые требуются для использования вашего модуля, перечислены в свойстве «зависимости». Используя npm, вы можете добавить эти зависимости в ваш файл package.json следующим образом:

    npm install --save packageName
  2. Эти пакеты, необходимые для разработки вашего модуля, перечислены в свойстве devDependencies. Эти пакеты не нужны другим для использования модуля, но если они хотят помочь в разработке модуля, эти пакеты будут необходимы. Используя npm, вы можете добавить эти devDependencies в ваш файл package.json следующим образом:

    npm install --save-dev packageName
Лонни Бест
источник
35

Чтобы добавить ответ Андреаса, вы можете установить только зависимости, используя:

npm install --production
machinehead115
источник
7

Документация от npm для npm install <package-name> --saveи npm install <package-name> --save-devможет быть найдена здесь:

https://docs.npmjs.com/getting-started/using-a-package.json#the-save-and-save-dev-install-flags

package.jsonФайл объявляет метаданные о модуле вы разрабатываете. Обе вышеупомянутые команды изменяют этот package.jsonфайл. --saveобъявит установленный пакет (в данном случае grunt) как зависимость для вашего модуля; --save-devобъявит это как зависимость для разработки вашего модуля.

Задайте себе вопрос: понадобится ли установленный пакет для использования моего модуля или он потребуется только для его разработки?

Нико Ковачевич
источник
6

Когда вы используете параметр "--save", ваша зависимость войдет внутрь # 1 ниже в package.json. Когда вы используете параметр "--save-dev", ваша зависимость попадет внутрь # 2 ниже в package.json.

# 1. «зависимости»: эти пакеты требуются вашему приложению в производстве.

# 2. «devDependencies»: эти пакеты нужны только для разработки и тестирования

Sathesh
источник
5

Для меня первый ответ кажется немного запутанным, поэтому, чтобы сделать его кратким и понятным:

npm install <package_name>по умолчанию сохраняет все указанные пакеты в зависимости . Кроме того, вы можете контролировать, где и как они сохраняются с помощью некоторых дополнительных флагов:

npm install <package_name> --no-save Предотвращает сохранение в зависимости.

npm install <package_name> ---save-devОбновления devDependenciesв вашем пакете. Они используются только для локального тестирования и разработки.

Вы можете прочитать больше на в Dcu

AnnaKlein
источник