Dieser Artikel wird in zwei beliebte JavaScript -Paketmanager, Garn und NPM, eingehen und ihre jeweiligen Vor- und Nachteile vergleichen, um Ihnen dabei zu helfen, das richtige Tool für Ihr Projekt auszuwählen.
Kernpunkte
Grundlagen
In der Vergangenheit reichte ein einfacher Texteditor für Entwickler aus, um die meisten Projekte zu erstellen und zu verwalten. Aber jetzt hat sich das Internet Erdschütteln unterzogen. Jetzt kann selbst ein ziemlich einfaches Projekt Hunderte oder sogar Tausende von Skripten sowie komplexe verschachtelte Abhängigkeiten enthalten, die einfach nicht ohne eine Art Automatisierungswerkzeug verwaltet werden können. Hier kommt der Paketmanager ins Spiel.
Package Manager ist ein Tool, das die Projektabhängigkeiten auf verschiedene Weise automatisch behandelt. Zum Beispiel können wir mit dem Paketmanager Pakete installieren, deinstallieren, aktualisieren und aktualisieren, Projekteinstellungen konfigurieren, Skripte ausführen und vieles mehr. Alle mühsamen Arbeiten werden vom Paketmanager geleistet. Wir müssen uns nur auf die Codierung selbst konzentrieren.
npm steht für Node Package Manager. Es wurde 2010 veröffentlicht und eröffnete eine neue Ära der Webentwicklung. Zuvor wurden Projektabhängigkeiten manuell heruntergeladen und verwaltet. NPM ist der Zauberstab, der das Web auf ein höheres Niveau treibt.
npm enthält tatsächlich drei Teile:
Wenn Sie sich mit der Verwendung von NPM befassen möchten, finden Sie in unserem Node Package Manager -Handbuch.
Garn steht für einen weiteren Ressourcenverhandler. YARN Package Manager ist eine Alternative zu NPM, die im Oktober 2016 von Facebook veröffentlicht wurde. Das ursprüngliche Ziel von Yarn war es, die Mängel von NPM wie Leistung und Sicherheitsproblemen zu beheben. Garn wurde schnell zu einem sicheren, schnellen und zuverlässigen JavaScript -Abhängigkeitsmanagement -Tool.
Aber das NPM -Team lernte die Lektion und machte schnell die Mängel von NPM durch, indem sie die fehlenden Funktionen implementieren.
Lassen Sie uns die Geschichte schnell überprüfen, um die Gesamtsituation zu verstehen:
Diese beiden Paketmanager sind in Paketmanagementwettbewerben vergleichbar und bieten ähnliche Funktionen. Es gibt jedoch immer noch einige Unterschiede, die uns helfen, festzustellen, welche wir verwenden sollen.
Im Rest dieses Tutorials werden wir die wichtigsten Ähnlichkeiten und Unterschiede zwischen NPM und Garn untersuchen.
Garn gegen NPM: Installationsvergleich
Wir beginnen mit dem Installationsprozess von NPM und Garn.
Wie oben erwähnt, ist NPM im Knoten vorinstalliert, sodass NPM nicht manuell installiert werden muss.
Stattdessen muss Garn explizit installiert werden. Zuerst müssen wir Garn installieren:
npm install -g yarn
Wir können es dann auf einer pro-projektbasierten Basis verwenden, indem wir den Befehl marnet set Version im Projektroot-Verzeichnis ausführen:
yarn set version berry
In diesem Fall ist Berry die Version, die wir festlegen möchten.
Wenn wir auf die neueste Version aktualisieren möchten, führen wir den folgenden Befehl aus:
yarn set version latest
Mit Garn können wir für jedes Projekt eine andere Version verwenden.
Um dasselbe mit NPM zu tun, müssen Sie NVM (Node Version Manager) installieren. Hier erfahren Sie, wie Sie mehrere Knotenversionen mit NVM installieren.
Lassen Sie uns nun sehen, wie Sie Projektabhängigkeiten installieren.
Wenn wir die NPM -Installation ausführen, werden die Abhängigkeiten wiederum installiert. Die Ausgangsprotokolle im Terminal sind reich an Informationen, sind jedoch etwas schwer zu lesen.
Um das Garn -Installationspaket zu verwenden, führen wir den Befehl garn aus. Parallele Installationspakete mit Garn, was einer der Gründe ist, warum es schneller als NPM ist. Wenn Sie Garn 1 verwenden, werden Sie feststellen, dass das Garnausgangsprotokoll präzise und leicht zu unterscheiden ist. Sie werden auch in Baumform sortiert, um ein leichtes Verständnis zu erhalten. Aber in den Versionen 2 und 3 sind die Protokolle nicht so intuitiv.
Bisher haben wir gesehen, dass NPM und Garn unterschiedliche Installationspaketbefehle haben. Im nächsten Abschnitt werden wir weitere Befehle untersuchen.
Vergleiche NPM- und Garnbefehle
NPM und Garn teilen viele Befehle, aber es gibt verschiedene Befehle. Lassen Sie uns zunächst einige der gleichen Befehle untersuchen:
npm install-Save-dev [Paket]
Obwohl Garn einige Vorteile hat, haben Garn und NPM in seiner neuesten Version vergleichbare Geschwindigkeiten. Daher können wir hier einen klaren Gewinner nicht definieren.
Garn gegen NPM: sicherer Vergleich
Einer der Hauptkritikpunkte von NPM betrifft die Sicherheit. Frühere NPM -Versionen hatten einige schwerwiegende Sicherheitslücken.
Ab Version 6 prüft NPM das Paket während der Installation und teilt Ihnen mit, ob Sie Schwachstellen finden. Wir können diese Überprüfung manuell durchführen, indem wir das NPM -Audit auf installierten Paketen ausführen. Wenn Schwachstellen gefunden werden, gibt uns NPM uns Sicherheitsberatung.
Wie in der obigen Abbildung gezeigt, können wir NPM Audit Fix ausführen, um Paketanfälligkeiten zu beheben. Wenn er festgelegt werden kann, wird auch der Abhängigkeitsbaum festgelegt.
Garn und NPM verwenden beide kryptografische Hashing -Algorithmen, um die Integrität der Paket zu gewährleisten.
Garn gegen NPM: Funktionalvergleich
wie bei Befehlen teilen NPM und Garn einige Funktionen, aber es gibt einige Unterschiede. Lassen Sie uns zunächst die gemeinsame Funktionalität dieser beiden Paketmanager untersuchen.
In package.json (die Datei, die NPM und Garn zur Verfolgung von Projektabhängigkeiten verwendet haben) ist die Versionsnummer nicht immer korrekt. Stattdessen können Sie einen Versionsbereich definieren. Auf diese Weise können Sie eine bestimmte Haupt- und Nebenversion des Pakets auswählen, NPM jedoch zulassen, die neuesten Patches zu installieren, die einige Fehler beheben können.
In der idealen Welt der semantischen Versionierung enthält die Patch -Version keine wesentlichen Änderungen. Aber leider ist dies nicht immer der Fall. Die von NPM verwendete Strategie kann dazu führen, dass beide Maschinen die gleiche Paket.json -Datei haben, jedoch unterschiedliche Versionen des Pakets installiert haben - dies kann einen Fehler einführen.
Um die Paketversion -Fehlanpassung zu vermeiden, wird die installierte genaue Version in der Paketsperrdatei behoben. Jedes Mal, wenn ein Modul hinzugefügt wird, erstellen (oder aktualisieren Sie) Paket-Lock.json bzw. Yarn.lock-Dateien. Auf diese Weise können Sie sicherstellen, dass ein anderer Computer genau das gleiche Paket installiert und gleichzeitig eine Reihe von zulässigen Versionen in package.json definiert.
Mit dem Arbeitsbereich können Sie über einen Monorepo verfügen, um Abhängigkeiten in mehreren Projekten zu verwalten. Dies bedeutet, dass Sie ein einzelnes Root-Paket auf der obersten Ebene haben, das mehrere Unterhöfe bezeichnet hat.
npx wird verwendet, um Skripte von ./node_modules/.bin auszuführen. Sie können auch Pakete aus der NPM -Registrierung ausführen, ohne sie in Ihre Projektabhängigkeiten zu installieren. Sie können beispielsweise eine neue React -Anwendung erstellen, indem Sie den folgenden Befehl ausführen:
npm install -g yarn
In Garn können Sie den äquivalenten DLX -Befehl verwenden, um dasselbe Ergebnis zu erzielen:
yarn set version berry
Die restlichen Funktionen, die wir untersuchen werden, sind einzigartig für Garn.
Null -Installation speichert den Cache in Ihrem Projektverzeichnis im Ordner .yarn. Wenn Sie Befehle wie Garn oder Garn add
Plug'n'play ist eine alternative Installationsstrategie. Garn generiert nicht das Verzeichnis node_modules und überlässt die Parsen an den Knoten, sondern erzeugt stattdessen eine einzelne .pnp.cjs -Datei, mit der Pakete an Stellen auf der Festplatte und der Liste der Abhängigkeiten abgebildet sind. Diese Funktion kann das Projektstart beschleunigen, Abhängigkeitsbäume optimieren, die Installation beschleunigen und natürlich den Bedarf an den Ordner node_modules beseitigen.
Garn hat eine Lizenzprüfung integriert, was in verschiedenen Szenarien bei der Entwicklung von Anwendungen sehr nützlich ist.
Garn gegen NPM: Welcher Paketmanager für
auswähltWir haben die verschiedenen Ähnlichkeiten und Unterschiede zwischen NPM und Garn behandelt, aber wir haben noch nicht festgestellt, welches besser ist und welcher wir wählen sollten. Wie immer hängt die Antwort von unseren Wünschen und Bedürfnissen ab.
Als allgemeine Anleitung fasse ich die folgenden Vorschläge zusammen:
Wenn Sie es immer noch schwer haben, eine klare Entscheidung zwischen NPM und Garn zu treffen, können Sie PNPM überprüfen, was versucht, die Vorteile dieser beiden Paketmanager zu kombinieren und ist der drittgrößte Riese im Paketmanagementpool.
Garn gegen NPM: Schlussfolgerung
Wir haben über die Bedeutung von Paketmanagern für die moderne Webentwicklung erfahren und zwei der beliebtesten Wettbewerber auf dem Markt vergleichen. Sie alle haben ihre eigenen Vor- und Nachteile, und um diejenigen zu wählen, die am besten zu Ihnen passt, müssen Sie ein klares Verständnis für Ihre Bedürfnisse haben. Der beste Weg, um zu entscheiden, welches für Sie besser ist, besteht darin, beide zu versuchen und zu sehen, welche besser abschneidet.
zuletzt nicht überdenken. Wählen Sie einfach eine aus und gehen Sie zum lustigen Teil: Erstellen Sie eine großartige App!
FAQs über Garn vs. Npm
Garn und NPM sind beide Paketmanager für JavaScript, haben jedoch einige wichtige Unterschiede. Garn wird von Facebook entwickelt und zielt darauf ab, einige der Mängeln von NPM anzusprechen. Es bietet höhere Geschwindigkeit, bessere Sicherheit und zuverlässigeres Abhängigkeitsmanagement. Andererseits ist NPM der Standardpaket -Manager für Node.js mit einer größeren Benutzerbasis. Aufgrund seiner einfacheren Syntax ist es auch einfacher, von Anfängern zu verwenden.
Ja, Garn ist normalerweise schneller als NPM. Dies liegt daran, dass Garn -Parallel -Installationspakete, die den Installationsprozess erheblich beschleunigen. Andererseits installiert NPM Pakete nacheinander, die langsamer sein können.
Garn verfügt über eine Funktion namens Checksum, die seine Integrität überprüft, bevor der Code des installierten Pakets ausgeführt wird. Dies fügt eine zusätzliche Sicherheitsebene hinzu, die NPM nicht hat. NPM hat jedoch in den jüngsten Veröffentlichungen erhebliche Verbesserungen der Sicherheitsmerkmale vorgenommen.
Während es technisch gesehen möglich ist, sowohl Garn als auch NPM im selben Projekt zu verwenden, wird dies nicht empfohlen. Dies liegt daran, dass Garn und NPM Abhängigkeiten unterschiedlich behandeln, was zu Inkonsistenzen und Fehlern im Projekt führen kann.
Garn verwendet Sperrdateien, um Versionen von Projektabhängigkeiten zu sperren. Dies stellt sicher, dass bei allen Maschinen jede Installation genau die gleiche Ordnerstruktur in node_modules erzeugt. NPM verwendet auch gesperrte Dateien, ist aber nicht so streng wie Garn.
Garn wird aufgrund seiner strikten Funktionen für die Dateiverriegelung und der Prüfsummen im Allgemeinen als zuverlässiger als NPM angesehen. NPM hat jedoch in den jüngsten Veröffentlichungen erhebliche Verbesserungen der Zuverlässigkeit vorgenommen.
npm verfügt aufgrund ihrer längeren Existenz über eine größere Community und mehr verfügbare Pakete. Garn wird jedoch immer beliebter und hat eine wachsende Gemeinschaft.
Einige der Herausforderungen beim Umschalten von NPM zu Garn umfassen das Erlernen neuer Syntax, die Migration bestehender Projekte und die Anpassung an das strenge Abhängigkeitsmanagement von Garn.
Garn unterscheidet sich geringfügig von der von NPM. Um das Garn -Installationspaket zu verwenden, können Sie den Befehl "Garn hinzufügen" verwenden und mit NPM können Sie "NPM Install" verwenden.
Num wird für Anfänger aufgrund ihrer einfacheren Syntax und größerer Gemeinschaft oft als leichter als leichter angesehen. Garn bietet jedoch fortschrittlichere Funktionen und ist eine gute Wahl für erfahrenere Entwickler.
Das obige ist der detaillierte Inhalt vonGarn gegen NPM: Alles, was Sie wissen müssen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!