Avantages de bundledDependencies cours normal des dépendances dans npm
npm permet de spécifier bundledDependencies
, mais quels sont les avantages à le faire? Je suppose que si nous voulons être absolument sûrs que nous obtenir la bonne version, même si le module que nous de référence est supprimé, ou peut-être il ya une vitesse de prestations avec le regroupement d'?
Ce que quelqu'un sait les avantages de bundledDependencies
cours normal des dépendances?
- "Si c'est écrit "bundleDependencies", alors que c'est aussi honorables.' Très bonne documentation!
- Et pourtant, en quelque sorte, en la fixant à relire "est également à l'honneur" se sent triste. Dans une tache serrée, si j'ai commandé un samouraï ou chevalier de l'aide, je serais certainement comme lui pour venir empaqueté avec compatible les armes et les armures-et pour être honnête.
- "Je suppose que si nous voulons être absolument sûrs que nous obtenir la bonne version, même si le module que nous de référence est supprimé" tout à coup, porte beaucoup de poids: blog.npmjs.org/post/141577284765/kik-left-pad-and-npm
- Voir aussi stackoverflow.com/questions/11459475/... .
Vous devez vous connecter pour publier un commentaire.
L'un des plus grands problèmes avec le Nœud est la façon rapide, il est en train de changer. Cela signifie que les systèmes de production peuvent être très fragiles et un
npm update
pouvez facilement casser des choses.À l'aide de bundledDependencies est un moyen de contourner ce problème en s'assurant, comme vous l'avez justement supposer, que vous devrez toujours fournir le bon dépendances n'importe quoi d'autre peut-être en train de changer.
Vous pouvez également l'utiliser pour s'emmitoufler votre propre, privé de faisceaux et de les livrer à l'installer.
npm update
n'affecte pas toutes les dépendances dans bundledDependencies?Pour la rapidité de lecteur : ce QA est sur le package.json bundledDependencies champ, pas sur le package.
Ce bundledDependencies ne
"bundledDependencies" sont exactement ce que leur nom l'indique. Les dépendances qui doivent être à l'intérieur de votre projet. Si la fonctionnalité est essentiellement la même que la normale dépendances. Ils seront également emballé lors de l'exécution de
npm pack
.Quand les utiliser
Normal dépendances sont généralement installés à partir du mécanisme national de prévention de registre.
Donc livré les dépendances sont utiles lorsque:
De cette façon, vous n'avez pas à créer (et conserver) votre propre mnp référentiel, mais obtenir les mêmes avantages que vous obtenez à partir de packages npm.
Quand pas à utiliser livré dépendances
Lors du développement, je ne pense pas que le point principal est d'empêcher les mises à jour si. Nous avons de meilleurs outils pour cela, à savoir les dépôts de code (git, mercurial, svn...) ou de verrouiller des fichiers.
À la broche de vos versions de package, vous pouvez utiliser:
Option1: Utiliser la plus récente MNP version 5 qui vient avec le nœud 8. Il utilise un
package-lock.json
fichier (voir la nœud blog et le nœud 8 release)Option2: utilisation fil au lieu de
npm
.C'est un gestionnaire de paquets de facebook, plus rapide que
npm
et il utilise unfil.verrouillage
fichier. Il utilise le mêmepackage.json
autrement.npm
fait copié de la fonctionnalité deyarn
, entre autres choses.npm shrinkwrap
la plupart du temps, et parfois l'ensemble, y compris la node_module dossier, dans votre référentiel de code. Ou peut-être l'utiliser shrinkpack. Les meilleures pratiques à l'époque ont été abordés sur la node.js blog et sur la joyent développeur sites web.Voir aussi
C'est un peu en dehors de la portée de la question, mais je tiens à mentionner le dernier type de dépendances (que je connais) : peer dépendances. Voir aussi cette SI la question et, éventuellement, les documents de
yarn
sur bundledDependencies.npm install -g shrinkpack
outil.node_modules
dossier. Le vrai problème pour moi est qu'il est possible d'annuler la publication d'un package à partir de mnp (docs.npmjs.com/cli/unpublish), et que par conséquent il n'y a aucune garantie que les paquets référencé sera encore là dans l'avenir.Autre avantage est que vous pouvez mettre vos dépendances internes (les composants de l'application) et puis il suffit de faire la demande dans votre application, comme s'ils étaient indépendants les uns des modules au lieu d'encombrer votre lib/et leur publication dans des mnp.
Si/quand ils sont mûri au point qu'ils pouvaient vivre dans des modules séparés, vous pouvez les mettre sur npm facilement, sans avoir à modifier votre code.
Je suis surpris, je ne vois pas cela ici déjà, mais lorsqu'ils sont soigneusement sélectionnés,
bundledDependencies
peut être utilisé pour produire un package distribuable denpm pack
qui va s'exécuter sur un système oùnpm
n'est pas configuré. Ceci est utile si vous avez par exemple un système qui n'est pas en réseau /pas sur internet: déposer votre colis sur une clé usb (ou autre) et décompressez l'archive, puisnpm run
ounode index.js
et il Fonctionne, tout Simplement.Peut-être il ya une meilleure façon de s'emmitoufler votre application de fonctionner "hors ligne", mais si je n'ai pas trouvé.
Sur le plan opérationnel, je regarde bundledDependencies comme un module privée du module de magasin, où les dépendances est de plus en plus publique, résolu entre votre module et de ses dépendances (et sous-dépendances). Votre module peut s'appuyer sur l'ancienne version, disons, de réagir, mais une dépendance nécessite plus récents et les plus grands. Votre package d'install, votre épinglé version en
node_modules/$yourmodule/node_modules/react
, tandis que votre dépendance à leur version ennode_modules/react
(ounode_modules/$dependency/node_modules/react
si ils sont si enclins).Une mise en garde: j'ai récemment rencontré une dépendance qui n'a pas à configurer correctement sa dépendance de réagir, et de devoir réagir dans bundledDependencies fit module dépendant à l'échec lors de l'exécution.