Der Versuch, Anfängern einen besseren Überblick zu geben.
npm war historisch (2010) der beliebteste Paketmanager für JavaScript. Wenn Sie es zum Verwalten der Abhängigkeiten Ihres Projekts verwenden möchten, können Sie den folgenden Befehl eingeben:
npm init
Dadurch wird eine package.json
Datei generiert . Es enthält alle Abhängigkeiten des Projekts.
Dann
npm install
würde ein Verzeichnis erstellen node_modules
und die Abhängigkeiten (die Sie der package.json
Datei hinzugefügt haben ) darin herunterladen .
Es wird auch eine package-lock.json
Datei erstellt. Diese Datei wird verwendet, um den Baum der Abhängigkeiten zu beschreiben, der generiert wurde. Es ermöglicht Entwicklern, genau dieselben Abhängigkeiten zu installieren. Sie können sich beispielsweise vorstellen, dass ein Entwickler eine Abhängigkeit auf Version 2 und dann auf Version 3 aktualisiert, während eine andere direkt auf Version 3 aktualisiert.
npm installiert Abhängigkeiten nicht deterministisch, was bedeutet, dass die beiden Entwickler ein unterschiedliches node_modules
Verzeichnis haben können, was zu unterschiedlichen Verhaltensweisen führt . ** npm hat beispielsweise im Februar 2018 unter einem schlechten Ruf gelitten: In Version 5.7.0 wurde ein Problem entdeckt, bei dem das Ausführen von sudo npm auf Linux-Systemen den Besitz von Systemdateien ändern und das Betriebssystem dauerhaft beschädigen würde.
Um diese und andere Probleme zu lösen, hat Facebook einen neuen Paketmanager eingeführt (2016): Garn Sie einen schnelleren, sichereren und zuverlässigeren Paketmanager für JavaScript.
Sie können einem Projekt Garn hinzufügen , indem Sie Folgendes eingeben:
yarn init
Dadurch wird eine package.json
Datei erstellt. Installieren Sie dann die Abhängigkeiten mit:
yarn install
Ein Ordner node_modules
wird generiert. Garn generiert auch eine Datei namens yarn.lock
. Diese Datei dient demselben Zweck wie die package-lock.json
, wird jedoch stattdessen unter Verwendung eines deterministischen und zuverlässigen Algorithmus erstellt, was zu konsistenten Builds führt.
Wenn Sie ein Projekt mit npm gestartet haben , können Sie problemlos auf Yarn migrieren . Garn verbraucht das gleiche package.json
. Weitere Informationen finden Sie unter Migrieren von npm .
Allerdings npm wurde mit jedem neuen Versionen verbessert und einige Projekte noch verwendet npm über Garn .