Pour le lecteur rapide : ce QA concerne le paquet.json champ bundledDependencies, pas sur le paquet .
Ce que font les bundledDependencies
Les "bundledDependencies" sont exactement ce que leur nom indique. Les dépendances qui devraient se trouver dans votre projet. Leur fonctionnalité est donc fondamentalement la même que celle des dépendances normales. Elles seront également empaquetées lors de l'exécution de npm pack
.
Quand les utiliser
Les dépendances normales sont généralement installées à partir du registre npm. Ainsi, les dépendances groupées sont utiles lorsque :
- vous voulez réutiliser une bibliothèque tierce qui ne provient pas du registre npm ou qui a été modifiée
- vous voulez réutiliser vos propres projets comme modules
- vous voulez distribuer certains fichiers avec votre module
Ainsi, vous n'avez pas besoin de créer (et de maintenir) votre propre dépôt npm, mais vous bénéficiez des mêmes avantages que les paquets npm.
Lorsque pas pour utiliser les dépendances groupées
Lors du développement, je ne pense pas que le but principal soit d'empêcher les mises à jour accidentelles. Nous avons de meilleurs outils pour cela, à savoir les dépôts de code (git, mercurial, svn...) ou maintenant les fichiers de verrouillage.
Pour épingler les versions de vos paquets, vous pouvez utiliser :
-
Option1 : Utilisez la nouvelle version 5 de NPM qui est fournie avec node 8. Il utilise un package-lock.json
(voir le blog de noeud et la version du nœud 8)
-
Option2 : utilice fils au lieu de npm
. C'est un gestionnaire de paquets de facebook, plus rapide que npm
et il utilise un yarn.lock
fichier. Il utilise le même package.json
autrement.
Ceci est comparable à la loc ou Cargo. Il est similaire à npm-shrinkwrap.json de npm, mais il n'y a pas de perte de données. perte et permet d'obtenir des résultats reproductibles.
npm
a en fait copié cette fonctionnalité de yarn
entre autres.
-
Option3 : c'était l'approche précédemment recommandée, que je ne recommande plus. L'idée était d'utiliser
npm shrinkwrap
la plupart du temps, et parfois mettre le tout, y compris le dossier node_module, dans votre dépôt de code. Ou éventuellement utiliser sac à dos rétractable . Les meilleures pratiques de l'époque ont été discutées sur le site Web de la Commission européenne. blog node.js et sur le développeur joyeux sites web.
Voir aussi
Cela sort un peu du cadre de la question, mais j'aimerais mentionner le dernier type de dépendances (que je connais) : dépendances entre pairs . Voir aussi Question connexe sur le SO et éventuellement les docs de yarn
sur bundledDependencies .