Warum sollte ich npm nicht verwenden, um Garn zu installieren?

78

In dem Blog-Beitrag, in dem Garn (ein alternativer npm-Client) angekündigt wird, heißt es: "Der einfachste Weg, um loszulegen, ist das Laufen. npm install -g yarn" Wenn Sie jedoch in den Dokumenten zur Seite "Garn installieren" gehen , wird "npm install yarn" auf keiner der plattformspezifischen Installationsseiten aufgeführt und nur als dritte von drei Optionen auf der Seite "Alternatives" angeboten . Wenn Sie ein npm installGarn verwenden, wird außerdem eine Verfallswarnung ausgegeben: "Es wird empfohlen, das Garn mit der nativen Installationsmethode für Ihre Umgebung zu installieren." Meine Frage ist also, ob dies npm installdie einfachste Installationsmethode ist. Warum wird sie in den Dokumenten nicht empfohlen? Gibt es Nachteile bei der Installation von Garn npm?

Chris Arnesen
quelle
npm install ist definitiv aufgeführt: yarnpkg.com/de/docs/install#install-via-npm
halfpastfour.am
1
@ halfpastfour.am Wenn ich diesen Link besuche, leitet er mich zu yarnpkg.com/en/docs/install#mac-stable weiter, in dem npm nicht als Installationsmethode aufgeführt ist
Chris Arnesen
1
Akright, versuchen Sie dies und scrollen Sie nach unten yarnpkg.com/de/docs/install#alternatives-stable
halfpastfour.am
@ halfpastfour.am Wie im Fragentext angegeben, wird npm tatsächlich als dritte von drei Optionen auf der Seite "Alternativen" aufgeführt.
Chris Arnesen

Antworten:

78

Laut den Betreuern des Yarn-Projekts widerspricht die Installation von Yarn über npm den Projektzielen , kann Probleme verursachen und ist im Allgemeinen schlechter als plattformspezifische Installationsmethoden.


Vorteile der empfohlenen plattformspezifischen Installation:

  • Die Garn-Teams betrachten npm als unsicher und unzuverlässig. Aus dem Abschnitt "Installation über npm" auf der Seite "Installation" von Yarn :

    Hinweis: Die Installation von Garn über npm wird im Allgemeinen nicht empfohlen. Die Installation von Yarn mit npm ist nicht deterministisch, das Paket ist nicht signiert und die einzige durchgeführte Integritätsprüfung ist ein grundlegender SHA1-Hash, der ein Sicherheitsrisiko bei der Installation systemweiter Apps darstellt.

    Aus diesen Gründen wird dringend empfohlen, Yarn über die für Ihr Betriebssystem am besten geeignete Installationsmethode zu installieren.

  • Das Ausführen von Yarn, einem separaten Paketmanager-Dienstprogramm, über npm kann zu Edge-Case-Problemen führen (siehe Ausgabe 2072 ).

  • Durch die Installation über einen Systempaket-Manager wird Yarn von npm entkoppelt, sodass Sie Yarn ohne npm ausführen können
  • Der Systempaket-Manager wird normalerweise regelmäßig ausgeführt und hält Yarn auf dem neuesten Stand
  • Die Installation von Garn über npm ist langsam

Vorteile für npm install -g yarn:

  • Schnell und einfach ( npm install -g yarn)
  • Kann in jeder npm-Umgebung durchgeführt werden (plattformunabhängig)
  • Bekanntes Paradigma und Prozess für Node.js Entwickler
  • Kann leicht aktualisiert werden ( npm update -g yarn)
    • Ein Garn Update - Befehl vorhanden ist ( yarn self-update) , aber es scheint zu sein gebrochen
  • Keine Abhängigkeit von Systempaketmanagern
  • Kann verschiedene Versionen von Yarn für verschiedene Projekte oder verschiedene Versionen von Node.js über verwenden nvm

Die Argumente des Systempaketmanagers für die empfohlene Installation fallen in der Regel zusammen, wenn auf Windows verwiesen wird, wo es keinen offiziellen Paketmanager gibt (es sei denn, Sie zählen Windows Update). Außerdem sind Windows-Paketmanager wie Chocolatey häufig nicht für automatische Updates konfiguriert.

Ich bin mir nicht sicher, ob ich der Entscheidung des Garn-Teams in dieser Hinsicht voll und ganz zustimme, aber sie machen einige faire Punkte. Das Yarn-Projekt ist noch jung und wenn es ein Ersatz für npm werden soll, wäre es nicht sinnvoll, npm als Hauptinstallateur zu fördern.

Unabhängig davon scheinen Installationen über npm in den meisten Fällen vorerst einwandfrei zu funktionieren.


Quellen:

Mike Hill
quelle
14
Meinung: Die wirkliche Antwort scheint zu sein, weil Garn ein Konkurrent von npm ist. Sie brauchen also einen Weg zur Adoption, an dem npm nicht beteiligt ist. Ich persönlich stimme zu, dass Garn besser ist, aber ich finde es etwas albern zu sagen, dass die Installation eines weiteren Paketmanagers (Homebrew) eine bessere Option ist als die Verwendung von npm, das bereits installiert ist, plattformübergreifend funktioniert und zwischen Projekten versioniert werden kann.
Ynot
Eine andere Meinung: Der einfachste und flexiblere Weg ist via curl -o- -L https://yarnpkg.com/install.sh | bash. Ihr Rat macht Sinn; warum hängen auf einer anderen Software, wenn bereit , einen installieren Abhängigkeits Manager ? Ich denke, das ist der Hauptgrund; Der Geschäftswettbewerb wird fair gespielt, da NPM sogar als eine der Methoden vorgeschlagen wird. Nur weil sie eine Software geschrieben haben, um das Durcheinander zu kompensieren, zu dem NPM und seine Entwicklungsprozesse in den letzten Jahren geworden sind, ist es ziemlich offensichtlich, dass sie alle Mängel unterstreichen und davon abraten, sie als Ausgangspunkt für Garn zu verwenden.
Kamafeather
Eine andere Meinung: Wenn Garn wirklich besser ist (da stimme ich zu), spielt es keine Rolle, ob Sie npm zum Installieren verwenden oder nicht. Wir alle wissen, dass Sie beim letzten Öffnen des IE Chrome heruntergeladen haben.
Xiao Peng - ZenUML.com
1
Ich denke, dass das Cache-Problem, das bei der Installation von Garn mit npm aufgetreten ist, auch bei einer anderen Installation auftreten kann. Daher finde ich es voreingenommen, solche Dinge zu präsentieren.
Jean Paul
Nach meiner jüngsten Erfahrung liefert die npm-Installation von Garn nicht zuverlässig eine ausführbare Datei, die verwendet werden kann.
Nroose
24

Es gibt keinen sichtbaren Nachteil bei der Installation von Garn npm. Tatsächlich habe ich diese Methode aus mehreren Gründen selbst gewählt:

  1. Es ist eindeutig der einfachste Weg, dies zu tun. npm i --global yarnund Sie können buchstäblich ersetzen npmmit yarnsofort auf der Konsole.
  2. Wenn Sie nvmfür jede NodeJS-Version unterschiedliche Codeprojekte verwenden und verwalten, können Sie Yarn auf einer Version installieren und auf der anderen nicht
  3. Ehrlich gesagt, der einzige Grund, warum ich mir vorstellen kann, dass es in den plattformspezifischen Installationen nicht erwähnt wird, ist, dass npm plattformunabhängig ist
Nikjohn
quelle
7

Da npmes nicht plattformspezifisch ist und auf fast jedem System ausgeführt wird, wird es als Alternative aufgeführt. Es gibt keinen Vor- oder Nachteil gegenüber den plattformspezifischen Installationen. Der Unterschied wäre der Installationsort, aber alle Methoden machen den globalen yarnBefehl für Ihre CLI verfügbar.

Ich würde argumentieren, dass sie es als "den einfachsten Weg" aufgeführt haben, weil die meisten Leute bereits sehr vertraut sind npm.

Mario Tacke
quelle