2942 votes

Quelle est la différence entre les dépendances, devDependencies et peerDependencies dans le fichier npm package.json ?

Cette documentation répond très mal à ma question. Je n'ai pas compris ces explications. Quelqu'un peut-il le dire avec des mots plus simples ? Peut-être avec des exemples si c'est difficile de choisir des mots simples ?

EDIT également ajouté peerDependencies qui est étroitement lié et peut prêter à confusion.

80 votes

Notez qu'il existe également optionalDependencies maintenant.

337 votes

AidanFeldman "optionalDependencies" est mon oxymore du jour.

6 votes

La documentation de npm dit : "dependencies" : Paquets requis par votre application en production. "devDependencies" : Les paquets qui ne sont nécessaires que pour le développement et les tests locaux. voir le lien : docs.npmjs.com/

12voto

cherankrish Points 1

En bref

  1. Dépendances - npm install <package> --save-prod installe les paquets requis par votre application dans l'environnement de production.

  2. DevDependencies - npm install <package> --save-dev installe les paquets requis uniquement pour le développement et les tests locaux

  3. Je tape juste npm install installe tous les paquets mentionnés dans le fichier package.json

donc si vous travaillez sur votre ordinateur local, tapez simplement npm install et continuez :)

7voto

Selva Ganapathi Points 343

Dépendances et dépendances de développement

Les dépendances de développement sont des modules qui ne sont nécessaires que pendant le développement, tandis que les dépendances sont nécessaires au moment de l'exécution. Si vous déployez votre application, les dépendances doivent être installées, sinon votre application ne fonctionnera tout simplement pas. Les bibliothèques que vous appelez depuis votre code et qui permettent au programme de fonctionner peuvent être considérées comme des dépendances.

Eg- React , React - dom

Les modules de dépendance de développement ne doivent pas être installés sur le serveur de production puisque vous ne développerez pas sur cette machine. Les compilateurs qui convertissent votre code en javascript, les cadres de test et les générateurs de documents peuvent être considérés comme des dépendances de développement puisqu'ils ne sont nécessaires que pendant le développement.

Eg- ESLint , Babel , webpack

@FYI,

mod-a
  dev-dependents:
    - mod-b
  dependents:
    - mod-c

mod-d
  dev-dependents:
    - mod-e
  dependents:
    - mod-a

----

npm install mod-d

installed modules:
  - mod-d
  - mod-a
  - mod-c

----

checkout the mod-d code repository

npm install

installed modules:
  - mod-a
  - mod-c
  - mod-e

Si vous publiez sur npm, il est important que vous utilisiez le bon drapeau pour les bons modules. Si votre module npm a besoin de fonctionner, utilisez l'option "--save" pour enregistrer le module en tant que dépendance. Si votre module n'a pas besoin de fonctionner mais qu'il est nécessaire pour les tests, utilisez l'option "--save-dev".

# For dependent modules
npm install dependent-module --save

# For dev-dependent modules
npm install development-module --save-dev

5voto

Quantalabs Points 93

Dépendances

Ce sont les paquets dont votre paquet a besoin pour fonctionner, ils seront donc installés lorsque les gens exécuteront

 npm install PACKAGE-NAME

Par exemple, si vous utilisez jQuery dans votre projet. Si quelqu'un n'a pas installé jQuery, cela ne fonctionnera pas. Pour l'enregistrer en tant que dépendance, utilisez

 npm install --save

Dépendances de développement

Ce sont les dépendances que vous utilisez dans le développement, mais qui ne sont pas nécessaires lorsque les gens l'utilisent. npm install il ne les installera pas car ils ne sont pas nécessaires. Par exemple, si vous utilisez mocha à tester, les gens n'ont pas besoin mocha à exécuter, donc npm install ne l'installe pas. Pour l'enregistrer comme dépendance de développement, utilisez

npm install PACKAGE --save-dev

Dépendances entre pairs

Ceux-ci peuvent être utilisés si vous souhaitez créer et publier votre propre bibliothèque afin qu'elle puisse être utilisée comme dépendance. Par exemple, si vous voulez que votre paquet soit utilisé comme dépendance dans un autre projet, il sera également installé lorsque quelqu'un installera le projet qui a votre projet comme dépendance. La plupart du temps, vous n'utiliserez pas les dépendances entre pairs.

3voto

Melchia Points 7965

Lorsque vous essayez de distribuer un paquet npm, vous devez éviter d'utiliser dependencies . Vous devez plutôt envisager de l'ajouter dans peerDependencies ou le retirer de dependencies .

2 votes

Veuillez ajouter une explication à votre réponse afin que d'autres puissent en tirer des enseignements - pourquoi ? exactement devrait utiliser le dependencies être évitée ?

0 votes

La plupart du temps, les dépendances ne sont qu'un ensemble de bibliothèques qui décrit l'écosystème. À moins que vous n'utilisiez vraiment une version spécifique d'une bibliothèque, vous devriez laisser l'utilisateur choisir d'installer ou non cette bibliothèque et quelle version choisir en l'ajoutant plutôt dans les peerDependencies.

0 votes

Veuillez ajouter toutes les précisions à votre réponse en l'éditant

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X