Für den schnellen Leser : In dieser Qualitätssicherung gehtes um dasFeld package.json bundledDependencies, nicht um das Paket .
Was bundledDependencies tun
"bundledDependencies" sind genau das, was ihr Name impliziert. Abhängigkeiten, die sich in Ihrem Projekt befinden sollten. Die Funktionalität entspricht also im Wesentlichen den normalen Abhängigkeiten. Sie werden auch beim Laufen verpackt npm pack
.
Wann man sie benutzt
Normale Abhängigkeiten werden normalerweise aus der npm-Registrierung installiert. Daher sind gebündelte Abhängigkeiten nützlich, wenn:
- Sie möchten eine Drittanbieter-Bibliothek wiederverwenden, die nicht aus der npm-Registrierung stammt oder die geändert wurde
- Sie möchten Ihre eigenen Projekte als Module wiederverwenden
- Sie möchten einige Dateien mit Ihrem Modul verteilen
Auf diese Weise müssen Sie kein eigenes npm-Repository erstellen (und verwalten), sondern erhalten dieselben Vorteile wie npm-Pakete.
Wann keine gebündelten Abhängigkeiten verwendet werden sollen
Bei der Entwicklung denke ich jedoch nicht, dass der Hauptpunkt darin besteht, versehentliche Updates zu verhindern. Wir haben dafür bessere Tools, nämlich Code-Repositorys (git, mercurial, svn ...) oder sperren jetzt Dateien.
Um Ihre Paketversionen zu pinnen, können Sie Folgendes verwenden:
Option 1: Verwenden Sie die neuere NPM-Version 5, die mit Knoten 8 geliefert wird . Sie verwendet eine package-lock.json
Datei (siehe Knoten-Blog und Version von Knoten 8).
Option 2: Verwenden Sie Garn anstelle von npm
. Es ist ein Paketmanager von Facebook, schneller als npm
und es verwendet eine yarn.lock
Datei. package.json
Ansonsten wird dasselbe verwendet .
Dies ist vergleichbar mit Sperrdateien in anderen Paketmanagern wie Bundler oder Cargo. Es ähnelt npm's npm-shrinkwrap.json, ist jedoch nicht verlustbehaftet und führt zu reproduzierbaren Ergebnissen.
npm
tatsächlich kopierte diese Funktion yarn
unter anderem von.
- Option 3: Dies war der zuvor empfohlene Ansatz, den ich nicht mehr empfehle. Die Idee war, die
npm shrinkwrap
meiste Zeit zu verwenden und manchmal das Ganze, einschließlich des Ordners node_module, in Ihr Code-Repository zu stellen. Oder verwenden Sie möglicherweise Shrinkpack . Die damaligen Best Practices wurden im node.js-Blog und auf den freudigen Entwickler- Websites diskutiert .
Siehe auch
Dies liegt etwas außerhalb des Rahmens der Frage, aber ich möchte die letzte Art von Abhängigkeiten erwähnen (von denen ich weiß): Peer-Abhängigkeiten . Siehe auch diese verwandte SO-Frage und möglicherweise die Dokumente zu yarn
on bundledDependencies .