Vorteile von gebündelten Abhängigkeiten gegenüber normalen Abhängigkeiten in NPM
npm ermöglicht es uns zu geben bundledDependencies aber was sind die Vorteile, dies zu tun? Ich denke, wenn wir wollen, machen absolut sicher, dass wir Holen Sie sich die richtige version, auch wenn das Modul der Hinweis gelöscht wird, oder vielleicht gibt es einen speed-Vorteil mit der Bündelung?
Jemand wissen, die Vorteile von bundledDependencies über normale Abhängigkeiten?
Extrahieren von bundledDependencies definition hier für die Bequemlichkeit:
bundledDependencies
Array-package-Namen, werden gebündelt bei der Veröffentlichung des Pakets.
Wenn dies geschrieben ist "bundleDependencies", dann ist auch ehrenhaft.
E. g.
bundledDependencies: ['foo', 'bar']
InformationsquelleAutor der Frage balupton | 2012-06-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eines der größten Probleme, jetzt mit Knoten, wie schnell es sich verändert. Dies bedeutet, dass die Produktion der Systeme können sehr zerbrechlich sein und eine
npm update
können leicht brechen Dinge.Mit bundledDependencies ist ein Weg, um zu umgehen dieses Problem, indem sichergestellt wird, wie Sie ganz richtig vermuten, dass Sie liefern immer die richtigen Abhängigkeiten, egal was Sie sonst noch ändern.
Können Sie auch diese zu bündeln Ihrem eigenen, privaten bundles und liefern Sie mit der Installation.
InformationsquelleAutor der Antwort Julian Knight
Für den schnellen Leser : dies ist die QA über die Paket.json bundledDependencies Feld nicht über die Paket.
Was bundledDependencies tun
"bundledDependencies" sind genau das, was Ihr name impliziert. Abhängigkeiten sollten in Ihrem Projekt. Also die Funktionalität ist im Grunde das gleiche wie normale Abhängigkeiten. Sie werden auch gepackt, wenn ausgeführt
npm pack
.Wann Sie zu verwenden
Normalen Abhängigkeiten werden üblicherweise aus der npm-registry.
So gebündelt Abhängigkeiten sind nützlich, wenn:
Diese Weise werden Sie nicht haben, zu erstellen (und pflegen) Ihre eigenen npm-repository, aber die gleichen Vorteile, die Sie von npm-Pakete.
Wenn nicht Verwendung gebündelt Abhängigkeiten
Beim entwickeln, ich denke nicht, dass das der wichtigste Punkt ist, um zu verhindern, dass versehentliche updates wenn. Wir haben bessere tools, nämlich code-repositories (git, mercurial, svn,...) oder jetzt auf lock-Dateien (.
Pin Ihrer Paket-Versionen, die Sie verwenden können:
Option 1: Verwenden der neueren NPM version 5, kommt mit 8 Knoten. Es verwendet eine
package-lock.json
- Datei (siehe Knoten-blog und der Knoten 8 release)Option2: verwenden Sie Garn statt
npm
.Es ist ein Paket-manager von facebook, schneller als
npm
und es verwendet eineGarn.lock
- Datei. Es verwendet die gleichenpackage.json
sonst.npm
tatsächlich kopiert, die Funktion vonyarn
unter anderem.npm shrinkwrap
die meiste Zeit, und manchmal die ganze Sache, einschließlich der node_module Ordner, in Ihrem code-repository. Oder vielleicht verwenden shrinkpack. Die besten Praktiken, die zu der Zeit diskutiert wurden auf der node.js blog und auf die joyent Entwickler websites.Siehe auch
Das ist ein bisschen außerhalb des Geltungsbereichs der Frage, aber erwähnen möchte ich die Letzte Art der Abhängigkeiten (die ich kenne) : peer-Abhängigkeiten. Siehe auch diesen im Zusammenhang DAMIT Frage und eventuell die docs von
yarn
auf bundledDependencies.InformationsquelleAutor der Antwort nha
Andere Vorteil ist, dass Sie können Ihre internen Abhängigkeiten (application components) und es dann eben verlangen, daß Sie in Ihrer app, als wären Sie unabhängige Module statt überladen Ihren lib/und dem publizieren auf npm.
Wenn Sie/, wenn Sie gereift ist der Punkt, von dem Sie Leben könnten als separate Module, können Sie diese npm einfach, ohne änderung an Ihrem code.
InformationsquelleAutor der Antwort Boris Egorov
Operativ, schau ich bundledDependencies als ein Modul eigenes Modul zu speichern, wo Abhängigkeiten ist mehr öffentlichkeit, aufgelöst unter das Modul und seine Abhängigkeiten (und sub-Abhängigkeiten). Das Modul kann sich auf eine ältere version von, sagen wir, zu reagieren, aber eine Abhängigkeit müssen neuesten und größten. Ihr Paket/installieren wird Ergebnis in der angehefteten version in
node_modules/$yourmodule/node_modules/react
während Ihrer Abhängigkeit erhalten, die Ihre version imnode_modules/react
(odernode_modules/$dependency/node_modules/react
wenn Sie so geneigt sind).Einen VORBEHALT: ich habe vor kurzem lief in eine Abhängigkeit, die nicht richtig konfigurieren Ihrer Abhängigkeit reagieren, und reagieren in bundledDependencies verursacht, dass abhängige Modul zur Laufzeit scheitern.
InformationsquelleAutor der Antwort mushuweasel
Ich bin überrascht, dass ich nicht sehen das hier schon, aber wenn sorgfältig ausgewählt,
bundledDependencies
kann verwendet werden, um eine verteilbare Paket vonnpm pack
ausgeführt wird, auf einem system, wonpm
ist nicht konfiguriert. Dies ist hilfreich, wenn Sie z.B. ein system, das nicht vernetzt /nicht auf dem internet: bringen Sie Ihr Paket über auf einem USB-Stick (oder was auch immer) und entpacken Sie den tarball, dannnpm run
odernode index.js
und es Funktioniert Einfach.Vielleicht gibt es eine bessere Art und Weise zu bündeln Sie Ihre Anwendung ausführen "offline", aber wenn es ist ich habe es nicht gefunden.
InformationsquelleAutor der Antwort Coderer