Que signifie -save-dev dans npm install grunt --save-dev


277

Je viens de commencer à utiliser Grunt.js . C'est assez difficile à configurer et je suis sur le point de créer un package.jsonfichier.

Après ce didacticiel , il indique qu'il existe 3 façons de créer un package.jsonfichier.

Le premier est de faire npm install grunt --save-dev

Mais qu'est-ce que cela --save-devsignifie? J'ai essayé de chercher mais ça se termine en vain.


Je pense que je parviens à trouver des réponses. gruntjs.com/getting-started - npmjs.org/doc/json.html#devDependencies
Vennsoh

lien du didacticiel rompu
SteveC

Réponses:


317

--save-dev: le package apparaîtra dans vos devDependencies.

Selon les documents d'installation de npm .

Si quelqu'un prévoit de télécharger et d'utiliser votre module dans son programme, il ne veut probablement pas ou n'a pas besoin de télécharger et de créer le cadre de test ou de documentation externe que vous utilisez.

En d'autres termes, lorsque vous exécutez npm install , les devDependencies de votre projet seront installés, mais les devDependencies pour tous les packages dont dépend votre application ne seront pas installés; en outre, les autres applications ayant votre application comme dépendance n'ont pas besoin d'installer vos devDependencies. Ces modules ne devraient être nécessaires que lors du développement de l'application (par exemple grunt, mocha, etc.).

Selon les documents package.json

Edit: Essayez de visualiser ce qui npm installfait:

  • votre projet
    • dépendance installée
      • dépendance installée
        • dépendance installée
        • devDependency NON installé
      • devDependency NON installé
    • devDependency installé
      • dépendance installée
      • devDependency NON installé

2
par défaut, il ne sera pas installé avec les dépendances de développement, mais comment puis-je installer avec alors? npm install --devdrapeau?
StanleyZheng

4
@stanzheng Je ne sais pas ce que vous devez savoir. Si vous êtes dans un projet et que vous l'exécutez npm install, les devDependencies du projet seront également installées. Vous ne voulez pas que les devDependencies d'une dépendance soient installées. Si vous souhaitez développer sur un package npm, vous devez git clone xxxexécuter ce projet et l'exécuter npm install.
Andreas Hultgren

3
"devDependencies pour les dépendances de votre application ne sera pas installé lorsque vous exécutez npm install" est incorrect. Si j'ai un package.json et qu'il ne contient que "devDependencies" avec mes packages npm, et que je tape ensuite "npm install", ces "devDependecies" sont installés.
core

6
J'ai essayé de comprendre et je ne l'ai pas fait. Ensuite, j'ai essayé de comprendre la visualisation et je ne l'ai pas fait. Que signifie chaque élément à puce? Un fichier? Que signifie l'élément barré? Un répertoire inexistant? Si cela est vrai, comment pouvez-vous lister de manière exhaustive les choses inexistantes?
Rafael Eyng

8
Pour clarifier, si npm installest exécuté dans votre projet, tous les devDependencies dans package.json seront installés, mais si vous empaquetez votre projet en tant que nouveau paquet npm et le publiez, lorsque quelqu'un d'autre installe votre paquet avec npm install, les devDependencies ne seront pas installé sur leur système. Est-ce correct? @stanzheng ou vous pouvez exécuter npm install --production pour tout installer dans package.json sauf les dépendances de dev
rwilson04

99

Il existe (au moins) deux types de dépendances de package que vous pouvez indiquer dans vos fichiers package.json:

  1. Les packages requis pour utiliser votre module sont répertoriés sous la propriété "dépendances". En utilisant npm, vous pouvez ajouter ces dépendances à votre fichier package.json de cette façon:

    npm install --save packageName
  2. Les packages requis pour aider à développer votre module sont répertoriés sous la propriété "devDependencies". Ces packages ne sont pas nécessaires pour que d'autres utilisent le module, mais s'ils veulent aider à développer le module, ces packages seront nécessaires. En utilisant npm, vous pouvez ajouter ces devDependencies à votre fichier package.json de cette façon:

    npm install --save-dev packageName

35

Pour compléter la réponse d'Andreas, vous pouvez installer uniquement les dépendances en utilisant:

npm install --production

7

La documentation de npm pour npm install <package-name> --saveet npm install <package-name> --save-devpeut être trouvée ici:

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

Un package.jsonfichier déclare des métadonnées sur le module que vous développez. Les deux commandes susmentionnées modifient ce package.jsonfichier. --savedéclarera le package installé (dans ce cas, grunt) comme une dépendance pour votre module; --save-devle déclarera comme une dépendance pour le développement de votre module.

Posez-vous la question: le package installé sera-t-il requis pour l'utilisation de mon module, ou ne sera-t-il nécessaire que pour le développer?


6

Lorsque vous utilisez le paramètre "--save", votre dépendance ira à l'intérieur du n ° 1 ci-dessous dans package.json. Lorsque vous utilisez le paramètre "--save-dev", votre dépendance ira à l'intérieur du # 2 ci-dessous dans package.json.

#1. "dépendances": ces packages sont requis par votre application en production.

# 2. "devDependencies": ces packages ne sont nécessaires que pour le développement et les tests


5

Pour moi, la première réponse semble un peu déroutante, alors pour faire court et propre:

npm install <package_name>enregistre tous les packages spécifiés dans les dépendances par défaut . De plus, vous pouvez contrôler où et comment ils sont enregistrés avec des indicateurs supplémentaires:

npm install <package_name> --no-save Empêche l'enregistrement dans les dépendances.

npm install <package_name> ---save-devmet à jour le devDependenciesdans votre package. Ils ne sont utilisés que pour les tests et le développement locaux.

Vous pouvez en lire plus sur le dcu

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.