Was sind die Unterschiede zwischen Garn und NPM? Zu der Zeit , diese Frage zu schreiben , kann ich nur einige Artikel über das Internet zeigt das finden , was wie das Garn Vorbehalte , eines NPM Befehl ist dies .
Haben sie die gleichen Funktionen (ich weiß, dass Yarn lokales Caching durchführt und Sie anscheinend nur einmal ein Paket herunterladen müssen), aber abgesehen davon gibt es irgendwelche Vorteile für den Wechsel von NPM zu Yarn?
javascript
npm
yarnpkg
Asha
quelle
quelle
Antworten:
UPDATE: März 2018 (etwas spät ...)
Seit Version 5,
npm
package-lock.json
Ihren gesamten Abhängigkeitsbaum auf die gleiche Weise wie der Sperrmechanismus des Garns (oder eines anderen) fixiert.--save
ist jetzt impliziert fürnpm i
npm 5.7.0 führte außerdem den
npm ci
Befehl ein, Abhängigkeiten in einer kontinuierlichen Integrationsumgebung schneller zu installieren, indem nur die in gefundenen Pakete installiert wurdenpackage-lock.json
(Meldung eines Fehlers, wenn diepackage-lock.json
undpackage.json
nicht synchronisiert sind).Persönlich benutze ich immer noch
npm
.Original
Ich hasse es, direkt aus Dokumenten zu zitieren, aber sie erklären hervorragend , warum, kurz genug, dass ich nicht sehe, wie ich die Ideen weiter zusammenfassen kann.
Weitgehend:
Sie wissen immer, dass Sie auf jeder Entwicklungsmaschine das Gleiche erhalten
Es paralellisiert Operationen, die
npm
dies nicht tun , undDas Netzwerk wird effizienter genutzt.
Möglicherweise werden auch andere Systemressourcen (z. B. RAM) effizienter genutzt .
Was sind die Produktionserfahrungen der Leute damit? Wer weiß, es ist ein Kind für die breite Öffentlichkeit.
TL; DR von Yehuda Katz :
Schöner Blogbeitrag
" NPM vs Yarn Cheat Sheet " von Gant Laborde
Etwas längere Version aus dem Projekt :
Und aus der README.md :
quelle
--flat
Option gibt, die eine echte flache Struktur erzwingt , bei der nur eine Version jeder Abhängigkeit installiert werden darf, aber wie ist das Standardverhalten hierzu? Vielen Dank.install -g
.npm :
Garn :
quelle
Was ist PNPM?
pnpm
verwendet Hardlinks und Symlinks, um eine Version eines Moduls nur einmal auf einer Festplatte zu speichern. Wenn Sie beispielsweise npm oder Yarn verwenden und 100 Projekte mit derselben Version von lodash verwenden, befinden sich 100 Kopien von lodash auf der Festplatte. Mit pnpm wird lodash an einem einzigen Ort auf der Festplatte gespeichert und über einen festen Link in die node_modules eingefügt, in denen es installiert werden soll.Dadurch sparen Sie Gigabyte Speicherplatz auf Ihrer Festplatte und Sie haben viel schnellere Installationen! Wenn Sie weitere Informationen zu der von pnpm erstellten eindeutigen node_modules-Struktur wünschen und wissen möchten, warum sie mit dem Node.js-Ökosystem gut funktioniert, lesen Sie diesen kleinen Artikel: Warum sollten wir pnpm verwenden?
Wie installiere ich PNPM?
Wie installiere ich das npm-Paket mit PNPM?
Vorteile von
PNPM
überYarn
undNPM
Hier ist ein Fortschrittsbalken, der die Installationszeit anzeigt
NPM
,YARN
undPNPM
(kürzerer Balken ist besser)Klicken Sie hier, um den Benchmark abzuschließen
Weitere Informationen finden Sie unter https://www.npmjs.com/package/pnpm
quelle
Wenn Sie ein Paket mit Yarn installieren (mit Garn Paketnamen hinzufügen), wird das Paket auf Ihrer Festplatte abgelegt . Bei der nächsten Installation wird dieses Paket verwendet, anstatt eine HTTP-Anforderung zu senden, um den Tarball aus der Registrierung abzurufen.
Garn wird mit einem praktischen Lizenzprüfer geliefert , der sehr leistungsfähig werden kann, wenn Sie die Lizenzen aller Module überprüfen müssen, von denen Sie abhängig sind.
Wenn Sie an proprietärer Software arbeiten, spielt es keine Rolle, welche Sie verwenden. Mit npm können Sie npm-shrinkwrap.js verwenden, während Sie yarn.lock mit Yarn verwenden können.
Für weitere Informationen lesen Sie bitte den folgenden Blog
https://blog.risingstack.com/yarn-vs-npm-node-js-package-managers/
quelle
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:
Dadurch wird eine
package.json
Datei generiert . Es enthält alle Abhängigkeiten des Projekts.Dann
würde ein Verzeichnis erstellen
node_modules
und die Abhängigkeiten (die Sie derpackage.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 namensyarn.lock
. Diese Datei dient demselben Zweck wie diepackage-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 .
quelle
Die Antwort von @msanford deckt fast alles ab, mir fehlt jedoch der Sicherheitsteil (OWASPs bekannte Sicherheitslücken).
Garn
Sie können sie überprüfen, indem
yarn audit
Sie sie jedoch nicht reparieren können. Dies ist immer noch ein offenes Problem auf einem GitHub ( https://github.com/yarnpkg/yarn/issues/7075 ).npm
Sie können verwenden
npm audit fix
, so dass einige von ihnen selbst reparieren können.Beide, dh
npm audit
&yarn audit
haben ihre eigenen Continuous Integration Tools. Dies sind jeweils https://github.com/IBM/audit-ci (verwendet, funktioniert hervorragend!) Und https://yarnpkg.com/package/audit-ci (nicht verwendet).quelle