npm è il gestore di pacchetti predefinito per Node.js. Facebook sviluppa da tempo una soluzione alternativa per la gestione dei pacchetti chiamata Yarn . Sembra che Yarn stia lentamente scomparendo dai file readme di GitHub come soluzione predefinita e le statistiche sul sito ufficiale mostrano che solo una frazione delle installazioni di pacchetti vengono eseguite con Yarn. Tuttavia, vale la pena guardare fuori dagli schemi.
Yarn è pienamente compatibile con i file package.json esistenti, quindi è possibile utilizzare facilmente entrambe le soluzioni nei progetti esistenti. I comandi per le due soluzioni differiscono solo leggermente. Di seguito è riportato un confronto dei comandi più importanti.:
| Descrizione | npm | Filato |
| Inizializzare | npm init | filato init |
| Aggiornare | installazione di npm -g npm | auto-aggiornamento del filato |
| Installa pacchetto | npm install --salva [nome] | filato aggiungi [nome] |
| Installa pacchetto | npm install --save-dev [nome] | filato aggiungere --dev [nome] |
| Installa il pacchetto a livello globale | npm install -g [nome] | filato globale aggiungi [nome] |
| Installa tutti i pacchetti | npm install | installazione del filato |
| Aggiorna tutti i pacchetti | aggiornamento npm | aggiornamento del filato |
| Disinstalla il pacchetto | npm rimuovi [nome] | filato rimuovi [nome] |
Yarn è iniziato con l'obiettivo di risolvere alcuni punti critici di npm. La differenza più evidente sono le prestazioni più elevate: attraverso installazioni incrementali, multithreading e l'ultima funzionalità killer Plug'n'Play (PNP), le prestazioni aumentano notevolmente. Plug'n'Play rifiuta l'idea di una cartella node_modules basata su progetto, che spesso può raggiungere altezze astronomiche nel numero di file. Puoi trovare ulteriori informazioni al riguardo nel white paper ufficiale Plug'n'Play . Installiamo l'eslint una volta con npm e poi con il filato con la cache riscaldata in ogni caso per rendere evidente la differenza di velocità (6x!):

