npm is de standaardpakketbeheerder voor Node.js. Facebook ontwikkelt al lang een alternatieve pakketbeheeroplossing genaamd Yarn . Yarn lijkt langzaam te verdwijnen uit de GitHub-leesberichten als de standaardoplossing en de statistieken op de officiële site laten zien dat slechts een fractie van de pakketinstallaties met Yarn wordt uitgevoerd. Toch is het de moeite waard om buiten de gebaande paden te kijken.
Yarn is volledig compatibel met bestaande package.json-bestanden, waardoor je beide oplossingen gemakkelijk in bestaande projecten kunt gebruiken. De commando's voor de twee oplossingen verschillen slechts minimaal. Hieronder volgt een vergelijking van de belangrijkste commando's.:
| Omschrijving | npm | Garen |
| Initialiseer | npm init | garen init |
| Bijwerken | npm install -g npm | garen zelf-update |
| Installeer pakket | npm installeren --sla [naam] | garen toevoegen [naam] |
| Installeer pakket | npm installeren --save-dev [naam] | garen toevoegen --dev [naam] |
| Installeer het pakket wereldwijd | npm install -g [naam] | garen globaal toevoegen [naam] |
| Installeer alle pakketten | npm installeren | garen installeren |
| Werk alle pakketten bij | npm-update | garen upgrade |
| Verwijder het pakket | npm verwijder [naam] | garen verwijderen [naam] |
Yarn begon met als doel een aantal pijnpunten van npm op te lossen. Het meest voor de hand liggende verschil zijn de hogere prestaties: door incrementele installaties, multithreading en de nieuwste killer-functie Plug'n'Play (PNP) nemen de prestaties dramatisch toe. Plug'n'Play verwerpt het idee van een projectgebaseerde node_modules map, die qua aantal bestanden vaak tot astronomische hoogten kan uitgroeien. Meer hierover leest u in de officiële Plug'n'Play whitepaper . We installeren eslint één keer met npm en vervolgens met garen waarbij de cache telkens opgewarmd is om het verschil in snelheid duidelijk te maken (6x!):

