Що означає -save-dev в npm встановити grunt --save-dev


277

Я тільки почав використовувати Grunt.js . Налаштувати це досить важко, і я зараз на місці створення package.jsonфайлу.

Дотримуючись цього підручника , він говорить, що існує 3 способи створення package.jsonфайлу.

Перше - це зробити npm install grunt --save-dev

Але що --save-devозначає? Я намагався шукати, але це закінчується даремно.


Я думаю, що мені вдається знайти деякі відповіді. gruntjs.com/getting-started - npmjs.org/doc/json.html#devЗалежності
Vennsoh

розірвано посилання на підручник
SteveC

Відповіді:


317

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

Відповідно до npm install docs .

Якщо хтось планує завантажувати та використовувати ваш модуль у своїй програмі, він, ймовірно, не хоче або потребує завантаження та створення зовнішнього тестового або документаційного фрейму, який ви використовуєте.

Іншими словами, при запуску npm installпрограми devDependitions вашого проекту будуть встановлені, але devDependitions для будь-яких пакетів, від яких залежить ваше додаток, не буде встановлено; Крім того, інші додатки, які мають ваш додаток як залежність, не повинні встановлювати свої devDependitions. Такі модулі повинні бути потрібні лише під час розробки програми (наприклад, грунт, мока тощо).

Згідно з документами package.json

Редагувати: Спроба візуалізувати, що npm installробить:

  • ваш проект
    • встановлена ​​залежність
      • встановлена ​​залежність
        • встановлена ​​залежність
        • devDependency НЕ встановлено
      • devDependency НЕ встановлено
    • встановлена ​​devDependency
      • встановлена ​​залежність
      • devDependency НЕ встановлено

2
за замовчуванням він не буде встановлюватись із залежними від розробників, але як я встановити тоді? npm install --devпрапор?
StanleyZheng

4
@stanzheng Я не впевнений, що ти повинен знати. Якщо ви перебуваєте в проекті та npm installпрацюєте, також будуть встановлені devDependitions. Ви не хочете, щоб встановлені залежності devDependitions залежностей. Якщо ви хочете розробити пакет npm, ви зробите git clone xxxцей проект і запустіть npm installйого.
Андреас Хультгрен

3
"devDependitions для залежностей вашого додатка не встановлюватимуться, коли ви запустите npm install" невірно. Якщо у мене є package.json, і він містить лише "devDependitions" з моїми пакетами npm, а потім я набираю "npm install", встановлюються ті "devDependecies".
серцевина

6
Я намагався зрозуміти, і цього не робив. Тоді я спробував зрозуміти візуалізацію, і я цього не зробив. Що означає кожен пункт кулі? Папка? Що означає закреслений предмет? Неіснуючий каталог? Якщо це правда, як ви можете перерахувати вичерпно неіснуючі речі?
Рафаель Ейн

8
Щоб уточнити, якщо npm installзапускається у вашому проекті, всі devDependitions в package.json будуть встановлені, але якщо ви упакуєте ваш проект як новий пакет npm і опублікуєте його, коли хтось інший встановить ваш пакет з npm install, devDependpendi не буде встановлені на їхній системі. Це так? @stanzheng або ви можете запустити npm install --production, щоб встановити все в package.json, за винятком залежностей від розробника
rwilson04

99

Існує (принаймні) два типи залежностей від пакету, які ви можете вказати у файлах package.json:

  1. Ті пакунки, які потрібні для використання вашого модуля, перелічені у властивості "залежності". Використовуючи npm, ви можете додати ці залежності до файлу package.json таким чином:

    npm install --save packageName
  2. Ці пакунки, необхідні для розвитку вашого модуля, перелічені у властивості "devDependitions". Ці пакети не потрібні, щоб інші користувалися модулем, але якщо вони хочуть допомогти розробити модуль, ці пакети знадобляться. Використовуючи npm, ви можете додати ці devDependitions до файлу package.json таким чином:

    npm install --save-dev packageName

35

Щоб додати відповідь Андреаса, ви можете встановити лише залежності, використовуючи:

npm install --production

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 в пакет.json. Коли ви використовуєте параметр "--save-dev", ваша залежність перейде всередину №2 нижче в package.json.

№1. "залежності": ці пакунки необхідні вашим додатком у виробництві.

№2. "devDependitions": ці пакети потрібні лише для розробки та тестування


5

Для мене перша відповідь здається дещо заплутаною, щоб зробити її короткою та чистою:

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

npm install <package_name> --no-save Запобігає збереженню до залежностей.

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

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

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