Heim > Web-Frontend > js-Tutorial > Garn gegen NPM: Alles, was Sie wissen müssen

Garn gegen NPM: Alles, was Sie wissen müssen

Jennifer Aniston
Freigeben: 2025-02-09 09:28:13
Original
396 Leute haben es durchsucht

Yarn vs npm: Everything You Need to Know

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

  • Garn und NPM sind beide beliebte Paketmanager, jeweils ihre Vor- und Nachteile. Das von Facebook entwickelte Garn ist schneller, sicherer und im Abhängigkeitsmanagement zuverlässiger. Als Standard -Paket -Manager für node.js verfügt NPM über eine größere Benutzerbasis, und die einfachere Syntax ist für Anfänger einfacher zu verwenden.
  • Garn Parallele Installationspakete, normalerweise schneller als NPM (sequentielle Installationspakete). Die neuesten Versionen dieser beiden Paketmanager sind jedoch mit der gleichen Geschwindigkeit.
  • In Bezug auf die Sicherheit verwendet Garn eine Prüfsumme, um die Integrität jedes installierten Pakets zu überprüfen, bevor der Paketcode ausgeführt wird. NPM hat auch in den jüngsten Veröffentlichungen, einschließlich Paketaudits während der Installation, erhebliche Verbesserungen an den Sicherheitsfunktionen vorgenommen.
  • Garn bietet einzigartige Funktionen wie Plug'n'play, Zero Installation und integrierte Lizenzprüfung. Es erfordert jedoch mehr Speicherplatz als NPM. Die Wahl zwischen Garn und NPM sollte auf individuellen Bedürfnissen und Workflow -Vorlieben beruhen.

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:

  • a Website für die Verwaltung aller Aspekte der NPM -Erfahrung;
  • A
  • Registrierung für den Zugriff auf eine riesige öffentliche JavaScript -Paketdatenbank; a
  • Befehlszeilenschnittstelle
  • (CLI) zum Interagieren mit NPM über das Terminal.
  • Aber wenn die meisten Leute über NPM sprechen, beziehen sie sich normalerweise auf das letzte - das CLI -Tool. Es wird als Standardpaket -Manager mit jeder neuen Knoteninstallation bereitgestellt. Dies bedeutet, dass Sie es sofort verwenden können.

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:

  • 2010: NPM veröffentlicht, unterstützend Knoten.
  • 2016: veröffentlicht von Garn. Es zeigt eine höhere Leistung als NPM. Es generiert auch eine Garn.lock -Datei, wodurch die Freigabe und eine präzise Replikation von Repositories erleichtert und vorhersehbarer wird.
  • 2017: NPM 5 veröffentlicht. Es bietet eine automatische Generation von Paket-Lock.json-Dateien als Antwort auf Garn.lock.
  • 2018: NPM 6 wird veröffentlicht, Sicherheitsverbesserungen. NPM überprüft nun Sicherheitslücken, bevor die Abhängigkeiten installiert werden.
  • 2020: Garn 2 und NPM 7 Release. Beide Pakete haben leistungsstarke neue Funktionen, die wir später in diesem Tutorial sehen werden.
  • 2021: Garn 3 mit verschiedenen Verbesserungen veröffentlicht.

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.

installieren Sie den Paketmanager selbst

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
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren

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.

Projektabhängigkeiten 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 init |.
  • npm run |.
  • NPM -Test |
  • npm veröffentlichen |.
  • npm Cache sauber |
  • Diese Befehle erleichtern es einfach, zwischen zwei Managern zu wechseln, aber es gibt verschiedene Befehle, die verwirrend sein können. Mal sehen, was sie in der nächsten Liste sind:
  • npm install |.
npm install [paket] | add [paket]: Installationspaket

npm install-Save-dev [Paket]
    npm Deinstall [Paket] | Garn entfernen [Paket]: Paket deinstallieren
  • NPM Deinstall-Save-Dev [Paket] | Garn entfernen
  • npm update |.
  • npm update [paket] | upgrade [paket]: update package
  • Garn hat auch einige einzigartige Befehle, die NPM nicht haben. Beispielsweise zeigt der Grund dafür, warum Pakete benötigt werden: Es kann sich um eine Abhängigkeit, ein lokales Modul oder eine Projektabhängigkeit handeln.
  • Garn gegen NPM: Geschwindigkeit und Leistung
  • Wenn Garn oder NPM ein Paket installieren muss, führen sie eine Reihe von Aufgaben aus. In NPM werden diese Aufgaben von Paketen ausgeführt, was bedeutet, dass sie nach dem vollständig installierten Paket bis zum nächsten Paket fortgesetzt wird. Stattdessen führt Garn diese Aufgaben parallel aus und verbessert damit die Leistung.
  • Obwohl beide Manager Caching -Mechanismen anbieten, scheint Garn ein wenig besser zu abschneiden. Durch die Implementierung des Null -Installationsparadigmas (das wir im Abschnitt "Feature -Vergleich) sehen, können Pakete fast sofort installiert werden. Es schneidet jedes Paket vor und spart es auf der Festplatte. Wenn Sie dieses Paket das nächste Mal installieren, benötigen Sie nicht einmal eine Internetverbindung, da das Paket offline von der Festplatte installiert ist.

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.

erzeugen Sie gesperrte Datei

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.

Verwenden des Arbeitsbereichs

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.

Skripte remote ausführen

Der Befehl

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
Nach dem Login kopieren
Nach dem Login kopieren

In Garn können Sie den äquivalenten DLX -Befehl verwenden, um dasselbe Ergebnis zu erzielen:

yarn set version berry
Nach dem Login kopieren
Nach dem Login kopieren

Die restlichen Funktionen, die wir untersuchen werden, sind einzigartig für Garn.

null Installation

Null -Installation speichert den Cache in Ihrem Projektverzeichnis im Ordner .yarn. Wenn Sie Befehle wie Garn oder Garn add verwenden, erstellt Garn eine .pnp.cjs -Datei. Diese Datei enthält den Abhängigkeits -Hierarchieknoten, das zum Laden von Projektpaketen verwendet wird. Sie können also fast sofort auf sie zugreifen.

Plug'n'play

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.

limit

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ählt

Wir 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 mit Ihrem aktuellen Workflow zufrieden sind, andere Tools nicht installieren und einen unzureichenden Speicherplatz haben, wählen Sie NPM.
  • Wenn Sie einige leistungsstarke Funktionen wie Plug’N'Play wünschen, benötigen Sie einige der in NPM fehlenden Funktionen und haben über genügend Speicherplatz, wählen Sie Garn.

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

Was ist der Hauptunterschied zwischen Garn und 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.

Ist Garn schneller als NPM?

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.

Wie ist die Sicherheit von Garn im Vergleich zu NPMs Sicherheit?

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.

Kann ich im selben Projekt Garn und NPM verwenden?

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.

Wie kann man mit Abhängigkeiten im Garn im Vergleich zu NPM umgehen?

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.

Ist Garn zuverlässiger als NPM?

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.

Wie ist die Unterstützung von Yarn mit der Unterstützung von NPM mit der Community -Unterstützung im Vergleich zu?

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.

Was sind einige der Herausforderungen beim Umschalten von NPM zu Garn?

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.

Wie vergleicht die Syntax von Yarn mit der Syntax von NPM?

Die Syntax von

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.

Ist Garn oder NPM für Anfänger besser?

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage