
kontaktiere uns


Was ist NPM? Und was ist Garn?
NPM und Garn sind zwei der beliebtesten Paketmanager unter JavaScript- und Node.js Entwicklern. Sie machen es einfacher Umgang mit den Abhängigkeiten eines Projekts, d. h. alles, worauf ein Projekt angewiesen ist, oder ein Teil des Codes, der notwendig ist, damit es ordnungsgemäß funktioniert. Wir brauchen sie, weil die Aufrechterhaltung der Abhängigkeiten des Projekts eine herausfordernde Aufgabe ist, für die wir sie installieren, deinstallieren, ändern oder aktualisieren müssen.
Lassen Sie sich von diesem Artikel helfen zu verstehen, was genau Paketmanager sind, wie Garn gegen NPM miteinander vergleichen und welche Eigenschaften macht die Arbeit mit dem einen besser als mit dem anderen.
Paketmanager oder Paketverwaltungssysteme sind Sammlungen von Tools, mit denen Sie Computerprogramme installieren, entfernen, ändern, aktualisieren und konfigurieren können. Außerdem können Sie Abhängigkeiten überprüfen und angeben, welche Programme aktualisiert werden sollten, um potenzielle Sicherheitslücken zu schließen.
In der heutigen Welt verlassen sich Entwickler auf Softwarepakete, was bedeutet, dass die Software in einer einzigen Datei enthalten ist, die alles zusammenfasst, was für das Funktionieren der Software erforderlich ist auf unserem System. Wenn nicht alles, enthält es zumindest Hinweise darauf, wo das System die benötigten Informationen erhalten kann.
Um einem Paketverwaltungssystem mitzuteilen, wie es mit dem umgehen soll, was sich darin befindet, enthalten die Pakete:
Die Skripte und Metadaten beantworten beispielsweise Fragen wie:
Alle Informationen, die zur Beantwortung dieser Fragen benötigt werden, sind gebündelt in einem Paket, wie Garn gegen NPM. Schauen wir uns nun jeden dieser Paketmanager an.
NPM (Node-Paketmanager) ist das Standard-Befehlszeilentool für Installation von Abhängigkeiten von Node.js und ein öffentliche Datenbank mit JavaScript-Paketen, kürzlich von Microsoft übernommen. Es stellt den Einstiegspunkt in das Ökosystem der Open-Source-JavaScript-Module und die Tools für die Arbeit mit und Verwaltung dieser Module dar.
Es wird häufig verwendet, um Node-Programme und -Anwendungen zu veröffentlichen, zu finden, zu installieren und zu entwickeln. Dafür verwendet es mehrere verschiedene Komponenten:
Das NPM-Registrierung ist ein wichtiger Teil des Node Package Manager-Ökosystems. Die Softwareregistrierung ist eine öffentliche Datenbank von JavaScript-Code, Tools, Bibliotheken und Frameworks, die zum Herunterladen und Verwenden in Ihren Anwendungen verfügbar sind.
Diese Registrierung ist die größte Softwareregistrierung im Internet. Derzeit sind fast 1 Million Pakete online verfügbar. Jeder kann seine frei verteilen JavaScript-Module indem Sie sie als Pakete auf NPM veröffentlichen. Die Registrierung ist das Herzstück und verbindet Millionen von Entwicklern weltweit mit den Paketen und Tools, die sie benötigen, um ihre Arbeit zu erledigen.
Anstatt Ihre Bewerbung komplett von Grund auf neu zu schreiben, können Sie Module, die von Node Package Manager veröffentlicht wurden, um Sie bei Ihrem Entwicklungsprozess zu unterstützen. Zum Beispiel ist Express.js das beliebteste Server-Framework für Node.js. Sie können es von NPM herunterladen und einen Server mit nur wenigen Codezeilen zum Laufen bringen.
Diese Verfügbarkeit von wiederverwendbare Module beschleunigen die Entwicklung von Node.js erheblich, indem Sie die Menge an anwendungsspezifischem Code reduzieren, den Sie schreiben müssen.
Angesichts der unglaublichen Menge an Paketen, die in der Registry verfügbar sind, kann es schwierig sein, das richtige Paket zur Lösung Ihres Problems zu finden. Aber hier ist der NPM-Webseite ist praktisch.
<a href="www.npmjs.com“; target="_blank">npmjs.com ist das Web-Frontend für die Node Package Manager-Registrierung. Es ist der zentrale Ort, um alle verfügbaren öffentlichen Pakete im NPM-Ökosystem zu durchsuchen.
Jedes Paket in der Registrierung hat eine eigene Seite auf der Node Package Manager-Website. Sie können Paketdetails, Nutzungsstatistiken, Links zum Paket-Repository, Issue Tracker und andere Metadaten zu jedem Paket einsehen. Diese Informationen sind sehr hilfreich, wenn Sie sich für ein Paket für Ihre Anwendung entscheiden.
Da jeder in der NPM-Registry veröffentlichen kann, gibt es keine Qualitätsgarantie für ein bestimmtes Paket. Also, wenn möglich, empfehlen wir Ihnen wählen Sie ein beliebtes, aktiv gewartetes Paket das konzentriert sich auf das Problem, das Sie genauer zu lösen versuchen.
Schauen Sie sich die Liste der auf npmjs.com verfügbaren Pakete an
Das NPM-Befehlszeile (CLI) Tool ist der Standard-Paketmanager, der mit Node.js gebündelt ist. Es hilft dir Abhängigkeiten installieren und verwalten. Es ist dafür verantwortlich, Pakete aus der Registry abzurufen und sie in Ihrem zu installieren Knotenmodule
Verzeichnis, in dem sie von Ihrem Code aus zugänglich sind.
Es wird auch aktualisiere die Abhängigkeiten Eintrag in Ihrem Paket.json
Datei bei der Installation neuer Abhängigkeiten, was unerlässlich ist.
Es ist wichtig zu erwähnen, dass die CLI über die Installation von Abhängigkeiten hinaus nützlich ist. Es ist bei dir während alle Phasen des Entwicklungszyklus, hilft dir Node.js Pakete und Anwendungen erstellen, ausführen, verwalten und teilen. Es sind viele Befehle verfügbar, aber hier sind einige der wichtigsten:
npm installieren
- Hilft Ihnen bei der Installation von Abhängigkeiten.npm init
- Wird verwendet, um eine zu generieren Paket.json
Datei.npm-Audit
- Fordert einen Bericht über bekannte Sicherheitslücken an.npm-Aktualisierung
- Hilft Ihnen, die installierten Versionen Ihrer Abhängigkeiten zu aktualisieren.npm deinstallieren
- Entfernt Abhängigkeiten von beiden Paket.json
und die Knotenmodule
Verzeichnis.npm run
- Hilft Ihnen beim Ausführen von Skripten, die in Ihrem Paket.json
.npm starten
- Führt das Startskript Ihres Projekts aus.npm veröffentlichen
- Veröffentlicht Ihr Paket in der NPM-Registry.
NPM Incorporated, Das Unternehmen ist verantwortlich für das Hosting und die Wartung der NPM-Registrierung und von npmjs.com.
Node Package Manager begann als Open-Source-Programm, das 2009 erstellt wurde. Seitdem ist es erheblich gewachsen. 2014 wurde NPM Inc. gegründet, um die Node Package Manager-Registrierung als nachhaltigen kostenlosen Service zu unterstützen.
Das wichtigste gewinnorientierte Produkt des Unternehmens bietet private Publishing-Pakete für das NPM-Register zur internen Verwendung durch Unternehmen, Teams und Unternehmensunternehmen. Ein kostenpflichtiges Konto ist jedoch rein optional und bleibt ein kostenloser Dienst, für den Sie sich nicht registrieren müssen.
Wie bereits erwähnt, ist die NPM-Registrierung ein wichtiger Teil des JavaScript-Ökosystems, und es ist wichtig zu verstehen, wer für dieses Ökosystem verantwortlich ist. Derzeit ist das NPM Inc., da sie kontrolliere das Register und triff Entscheidungen über seine Zukunft.
Lesen Sie auch:
Yarn ist ein JavaScript-Paket- und Abhängigkeitsmanager wurde 2016 von Facebook entwickelt und von Google, Exponent und Tilde unterstützt. Es wurde entwickelt, um die Mängel älterer Versionen der NPM-CLI zu beheben, und erregte schnell die Aufmerksamkeit und Unterstützung einer großen Open-Source-Community.
Heute ist Yarn eine beliebte Alternative zu npm, da es schnell und einfach zu verwenden ist.
Wie NPM Mit Yarn können Sie Code verwenden und mit anderen Entwicklern weltweit teilen, sodass Sie das Rad nicht neu erfinden müssen, d. h. Sie können Code verwenden, den andere Entwickler geschrieben und veröffentlicht haben. Dies erleichtert Ihnen das Erstellen von Software, da Sie die Antworten anderer Entwickler auf bestimmte Probleme nutzen können.
Da Yarn auf der NPM-Registry basiert, sind die hier veröffentlichten Pakete auch auf Yarn verfügbar, was für ein nahtloses Upgrade sorgt.
Die Rolle von Paketmanagern wie Mit Yarn können Sie Funktionen schnell und sicher installieren; dies erfolgt ebenfalls über Befehlszeilenbefehle.
Immer wenn eine Funktion hinzugefügt wird, lädt sie den erforderlichen Code aus einem Repository herunter und fügt ihn dem Projekt hinzu. Außerdem werden die erforderlichen Referenzen hinzugefügt, falls das Paket andere Bibliotheken als Abhängigkeit benötigt, um ordnungsgemäß zu funktionieren.
Yarn ist daher ein Paketmanager, der Funktionen in Webanwendungen installiert, ändert und löscht. Es ist auch ein Open-Source-Tool, das entstanden ist verbessern Sie einige Probleme, die Node Package Manager verursacht, wie z. B. die Langsamkeit und Unmöglichkeit, Pakete offline zu installieren.
Eine Besonderheit der Architektur von Yarn ist die Art und Weise, wie die Pakete installiert werden, die in drei verschiedenen Schritten erfolgt:
Knotenmodule
„oder“. Garn
„Ordner, je nach Version (Yarn 2, auf den wir in Kürze eingehen werden) und in den Yarn-Steuerdateien aktualisiert.
Da Yarn Ihnen Zugriff auf dieselben Pakete wie Node Package Manager bietet, sind seine Abhängigkeitsbefehle sehr ähnlich:
Garn hinzufügen
- Fügt Ihrem vorhandenen Paket ein Paket hinzu. Garnstrick
- Startet den Paketentwicklungsprozess.Garn installieren
- Installiert alle Abhängigkeiten des Pakets im Paket.json
OrdnerGarn veröffentlichen
- Sendet ein Paket an das Paketverwaltungssystem.Garn entfernen
- Entfernt ein unnötiges Paket aus dem aktuellen Paket.
Garn 4 erweitert den beeindruckenden Innovationspfad des Yarn Package Managers weiter. Diese Version bietet eine Vielzahl von Verbesserungen gegenüber ihrem Vorgänger und führt neue Funktionen ein, wie z. B. einen optimierten Installationsvorgang, bei dem Plug'n'Play noch einen Schritt weiter geht.
Hier sind die aufregenden Facetten von Yarn 4:
Hier ist eine Tabelle, die Entwicklern eine Kurzreferenz bietet, um die entsprechenden Befehle zwischen npm und yarn für verschiedene Aufgaben zu verstehen:
Yarn Version 1 und NPM behandeln Abhängigkeiten auf ähnliche Weise. Sie speichern die Metadaten in der Paket.json
Datei, die im Unterverzeichnis gespeichert ist - Knotenmodule
.
Yarn verfolgt ab Version 2 keine Abhängigkeiten mehr im Unterverzeichnis Node Modules. Yarn 2.0 verwendet dagegen Plug'n'Play Funktionalität, die eine einzige schafft .pnp.cjs
Datei. Diese Datei zeigt ein Diagramm der Abhängigkeitshierarchie eines Projekts.
Yarn installiert Abhängigkeiten mit dem Garn
Befehl. Es installiert Abhängigkeiten gleichzeitig, d. h. parallel, sodass Sie mehrere Dateien gleichzeitig hinzufügen können. Wenn Sie Abhängigkeiten installieren, wird eine Sperrdatei erstellt, die die genaue Liste der verwendeten Abhängigkeiten speichert. Diese Datei ist bekannt als Garn. Schloss
.
Node Package Manager installiert Abhängigkeiten nacheinander durch die npm installieren
Befehl.
Es produziert auch eine Paketsperr.json
Versionssperrdatei. Diese Datei wird auch von Yarn unterstützt, sodass Benutzer Versionsdaten vom Node Package Manager nach Yarn verschieben können.
Beim Herunterladen von Paketen Yarn führt im Hintergrund eine Sicherheitsüberprüfung durch. Es verwendet die Paketlizenzinformationen, um zu verhindern, dass gefährliche Skripte heruntergeladen werden oder dass es zu Abhängigkeitsproblemen kommt.
Um einen sicheren Datenfluss zu gewährleisten, verwenden beide Verschlüsselungstechniken. Yarn validiert Pakete anhand von Prüfsummen, wohingegen NPM die verwendet Paketsperr.json
SHA-512 (Secure Hash Algorithm) der Datei.
In früheren Versionen waren Sicherheitsprobleme ein großes Problem. Jetzt, jedes Mal, wenn Sie ein Paket installieren, es führt ab Version 6 eine Sicherheitsbewertung durch. Das hilft Sicherheitslücken vermeiden und versichert das keine Abhängigkeiten sind inkompatibel.
Das npm-Audit
Der Befehl kann auch verwendet werden, um ein manuelles Audit durchzuführen. Wenn es irgendwelche Sicherheitslücken entdeckt, verwenden Sie NPM-Audit-Korrektur
um die Probleme zu beheben.
Beide Paketmanager haben mehrere grundlegende Funktionen gemeinsam:
Garn. Schloss
in Garn und Paketsperr.json
in NPM.npx
Befehl in NPM und der Garn dlx
Mit dem Befehl in Yarn können Sie Skripte sowohl in NPM als auch in Yarn remote ausführen.
Wie bereits oben erwähnt, gehören zu den einzigartigen Funktionen von Yarn:
.pnp.cjs
Datei, die Projektabhängigkeiten abbildet, anstatt den Ordner Node Modules zu verwenden. Dies führt zu optimierten Abhängigkeitsbäumen und einem schnelleren Projektstart und einer schnelleren Paketinstallation..pnp.cjs
Datei zum Zuordnen von Paketen, die im Offline-Cache gespeichert sind. Auf diese Weise können Sie Pakete, die gespeichert wurden, schnell abrufen und installieren.
Wie bereits erwähnt, Yarn installiert Abhängigkeitspakete parallel, wohingegen Node Package Manager installiert sie sequentiell. Infolgedessen Yarn übertrifft die Leistung bei der Installation größerer Dateien.
Beide Tools können speichern vom Offline-Cache abhängige Dateien. Auf diese Weise können Benutzer Abhängigkeiten installieren, auch wenn sie nicht mit dem Internet verbunden.
Garn verwendet auch die Keine Installation Funktionalität ab Version 2. Diese Funktion nutzt die Abhängigkeitskarte aus dem .pnp.cjs
Datei, um eine Offline-Abhängigkeitsinstallation ohne Verzögerungen durchzuführen.
Lesen Sie auch:
Was ist der beste Paketmanager für Ihre Projekte? Im Jahr 2024 werden die beiden beliebten Konkurrenten weiterhin npm, der ursprüngliche Paketmanager von Node.js, und Garn, das neue Kind auf dem Block. Beide haben bemerkenswerte Stärken und einige Bereiche müssen poliert werden. Die Frage läuft also darauf hinaus: Sollten Sie 2024 Garn oder npm wählen?
Wenn Geschwindigkeit und deterministische Abhängigkeiten für Sie wichtig sind, ist Yarn die beste Wahl. Yarn machte Sperrdateien populär und stellte sicher, dass dieselben Versionen von Abhängigkeiten auf verschiedenen Systemen installiert werden. Es wurde ursprünglich entwickelt, um schneller zu sein, was es auch heute noch ist. Ihre erweiterte Unterstützung für Monorepo über Workspaces wurde entwickelt, um die Orchestrierung von Monorepo-Paketen und Abhängigkeiten zu vereinfachen.
Vorteile:
Nachteile:
npm hat Yarn beeindruckend eingeholt. Angesichts der erheblichen Verbesserungen, die durch das Modell von Yarn beeinflusst wurden, bietet die npm-CLI eine Sperrdatei (package-lock.json) für deterministische Installationen und leistet mit ihrer Gesamtfunktionalität bemerkenswerte Arbeit. Darüber hinaus rückt die Sicherheit mit Funktionen wie automatischen Warnmeldungen für anfällige Abhängigkeiten und dem npm audit fix immer mehr in den Mittelpunkt. Außerdem sind npm-Befehle im Allgemeinen intuitiver und leichter zu merken.
Vorteile:
Nachteile:
Die Entscheidung läuft darauf hinaus, was Sie am meisten schätzen und was am besten zu Ihren Projektanforderungen passt. Geschwindigkeit und effiziente Handhabung von Monorepos kippen die Waage zu Gunsten von Yarn. Umgekehrt ist npm Ihre erste Wahl, wenn Sie Stabilität, ein robustes Ökosystem und eine einfachere Befehlsstruktur suchen. In jedem Fall bieten sowohl npm als auch Yarn enorme Vorteile, die es wert sind, in Betracht gezogen zu werden, um sicherzustellen, dass Ihr Entwicklungsprozess im Jahr 2024 sowohl effizient als auch unterhaltsam wird.
In Anbetracht der abgedeckten Unterschiede und Merkmale zwischen Garn und NPM, Letzteres ist für Entwickler vorzuziehen, die mit dem aktuellen Workflow vertraut und damit zufrieden sind. Es bietet eine anständige Benutzererfahrung und spart gleichzeitig Speicherplatz auf der Festplatte.
Garn hat komplexere Bestandteile wie Plug'n'Play und Zero-Installation über Yarn 2. Es auch verbessert Leistung und Sicherheit, allerdings auf Kosten der Festplattenkapazität.
Wie wir sehen können, werden beide Technologien auf ähnliche Weise verwendet, also sollten Sie Analysieren Sie die Priorität Ihres Projekts und Ihre Präferenzen wenn Sie zwischen den beiden wählen.
Denken Sie daran, dass (bisher) beide kompatibel sind, was bedeutet, dass Sie bei Bedarf während der Entwicklung eines Projekts mit den entsprechenden Einstellungen zwischen den beiden wechseln können.
Vielseitiger und datengesteuerter Wachstumsvermarkter mit fundierten Geschäftskenntnissen, der über die neuesten Entwicklungen in der digitalen Marketinglandschaft auf dem Laufenden gehalten wird.
Your everyday web developer who likes to hide in the backend. Javascript and Ruby are my jam. I still fumble with Docker and my builds break quite often.
People who read this post, also found these interesting: