npm är standardpakethanteraren för Node.js. Facebook har dock utvecklat en alternativ pakethanteringslösning som heter Yarn under en tid nu. Yarn verkar sakta försvinna från GitHubs README som standardlösning, och statistiken på den officiella webbplatsen visar att endast en bråkdel av paketinstallationerna utförs med Yarn. Ändå är det värt att ta en titt bortom det uppenbara.
Yarn är helt kompatibelt med befintliga package.json-filer, så du kan enkelt använda båda lösningarna i befintliga projekt. Kommandona för de två lösningarna skiljer sig bara marginellt åt. Nedan följer en jämförelse av de viktigaste kommandona.:
| Beskrivning | npm | Garn |
| Initiera | npm init | garn init |
| Uppdatering | npm installera -g npm | garn självuppdatering |
| Installera paketet | npm installera - spara [namn] | garn lägg till [namn] |
| Installera paketet | npm installera --save-dev [namn] | garn lägg till --dev [namn] |
| Installera paketet globalt | npm installera -g [namn] | garn globalt lägg till [namn] |
| Installera alla paket | npm installera | garninstallation |
| Uppdatera alla paket | npm-uppdatering | garnuppgradering |
| Avinstallera paketet | npm ta bort [namn] | garn ta bort [namn] |
Yarn utformades för att åtgärda några av npms svagheter. Den mest uppenbara skillnaden är dess förbättrade prestanda: stegvisa installationer, multitrådning och den senaste grymma funktionen , Plug'n'Play (PNP), ökar prestandan dramatiskt. Plug'n'Play eliminerar behovet av en projektbaserad `node_modules`-mapp, som ofta kan växa till astronomiska proportioner i antalet filer. Mer information finns i den officiella Plug'n'Play-vitboken . Vi installerar eslint en gång med npm och sedan med Yarn, var och en med en uppvärmd cache, för att tydligt demonstrera hastighetsskillnaden (6x!).:

