Pages

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

Vous trouverez dans cet article un résumé des importantes différences au niveau de comportement des dependencies, devDependencies, peerDependencies et optionalDependencies  :
  • dependencies ce sont les dépendances utiles à un fonctionnement en production et sont installés via les deux commandes :
    • npm install à partir d'un répertoire qui contient package.json
    • npm install $package sur n'importe quel autre répertoire (par exemple npm install angular)
    • devDependencies: ce sont les dépendances utiles uniquement dans le cadre du développement, par exemple pour exécuter des tests ou s’assurer de la qualité du code ou encore empaqueter le projet :
      • Sont également installés via npm install sur un répertoire contenant package.json, à moins que vous passiez le flag --production (npm instal --production).
      • ou via npm install $package -D (npm install $package --save-dev) sur n'importe quel autre répertoire.
      • Ils ne sont pas installés de manière transitoire (voir définition en bas).
      • À titre d'exemple, mocha serait normalement un devDependency, car les tests ne sont pas nécessaires dans la production, par contre express serait une dependency car il est utilisé en production.
      • Les dependencies sont nécessaires pour l'exécution du projet, tandis que les devDependencies le sont pour le développement.
      • peerDependencies:
        • Les version 1 et 2 de npm les installent automatiquement si elles ne dépendent pas explicitement de plus haut dans l'arborescence des dépendances. Dans la prochaine version majeure de npm (npm@3), ce ne sera plus le cas. Vous recevrez un avertissement indiquant que peerDependenciy n'est pas installé.
      • optionalDependencies:
        • Si une dépendance peut être utilisée, mais que vous souhaitez que npm procède comme si elle ne peut pas être trouvée ou si vous ne parvenez pas à l'installer, vous pouvez la placer dans l'objet optionalDependencies, cet objet est tout comme l'objet des dependenciesla différence est que les erreurs de build ne provoquent pas l'échec de l'installation.
        Transitivité :
        • Les dependencies sont installées de manière transitoire: si A requiert B, et B nécessite C, alors C est installé, sinon B ne pouvait pas fonctionner, A non plus.
        • Les devDependencies ne sont pas installés de manière transitoire. Par exemple. Nous n'avons pas besoin de tester B pour tester A, donc la dépendance au tests de B peut être exclue.
        À savoir :

        • npm install prend 3 flags exclusifs et optionnels qui enregistrent ou mettent à jour la version du package dans votre package.json principal:
          • -S, --save: Le paquet apparaîtra dans vos dependencies.
          • -D, --save-dev: Le paquet apparaîtra dans vos devDependencies.
          • -O, --save-optional: Le paquet apparaîtra dans vos  optionalDependencies.

        houdass

        Développeur depuis quelques années, j'ai une connaissance approfondie de nombreux langages et frameworks. Curieux de comprendre le "comment ça fonctionne" plutôt que de simplement "utiliser", c'est avec cet état d'esprit que j'évolue depuis plusieurs années et que j'élargie mes horizons.

          Aucun commentaire:

          Enregistrer un commentaire