Mettiamo prima le cose a posto: sia NPM che Yarn sono dei package manager. Ok, ma cosa fa un package manager? Aiuta noi sviluppatori a condividere pacchetti con gli altri e a nostra volta ci aiuta nell’includere nel nostro progetto pacchetti esterni, potendo ovviamente anche riutilizzare, modificare e caricarne uno nuovo. Ecco che appunto i due più popolari gestore di pacchetti di Node.js sono npm e Yarm. Proviamo qui a spiegarne le differenze per aiutarci a scegliere quale tool è più adatto a noi.

npm

npm sta per Node Package Manager ed è sicuramente considerato come il più vasto gestore (o registro) di pacchetti del mondo. È gratis, open-source e viene installato assieme a Node.js stesso. La sua funzione principale è quella di gestire le dipendenze e i pacchetti utilizzati. Da qui la definizione laterale di dependency manager. È stato integrato in node proprio perché ne aumenta l’efficienza permettendoci di installare velocemente il pacchetto che ci serve.

I suoi vantaggi sono:

  • facilità di utilizzo
  • ottimizzazione dello spazio utilizzato
  • rende più rapido lo sviluppo

E questo va già più che bene, permettendoci di caricare, condividere e riutilizzare i pacchetti.

Come installare NPM

NPM, come detto, dovrebbe essere già installato assieme a Node.js stesso. Per verificare che sia installato eseguiamo il comando:

node -v

per verificare che Node sia correttamente installato sul nostro sistema, otterremo la versione attuale:

v14.17.0

A questo punto facciamo la stessa cosa per npm:

npm -v
6.14.13

Una curiosità: npm viene aggiornato molto più frequentemente di Node stesso, quindi è consigliabile aggiornarlo anche indipendentemente da Node. Per farlo, utilizziamo questo comando:

npm install npm@latest -g

Svantaggi di NPM

Veniamo ora ai contro di NPM. Molti di questi drawback hanno fatto nascere molti progetti alternativi, come Yarn, appunto, che tentano di risolverli release dopo release. Vediamo quali sono:

  • ha un registro unico e centralizzato, che può non essere disponibile (e spesso lo fa)
  • è richiesta una connessione per installare pacchetti
  • ha comandi più confusi rispetto a Yarn
  • ha una sicurezza minore rispetto a Yarn, permettendo ad esempio di eseguire codice durante l’installazione di un pacchetto

Vantaggi di Yarn

Yarn è un progetto più recente (rispetto a npm di sicuro!) di package manager per Node js. È un progetto comune, sviluppato da aziende tra le quali Facebook, Google, e Tilde e distribuito con licenza BSD. Mentre scriviamo, siamo alla versione 1.22. Considerando il motivo principale per il quale si passa dall’usare NPM a Yarn, esso può essere sicuramente identificato nella stabilità: se sviluppassimo lo stesso progetto su macchine diverse, ad esempio, le versioni dei pacchetti potrebbero essere diverse. È probabile che proprio questo svantaggio di NPM abbia fatto nascere lo sviluppo Yarn. In ogni caso, i suoi pro sono:

  • è possibile installare i pacchetti dalla cache locale
  • è possibile indicare precisamente quale versione si vuole installare del pacchetto
  • i pacchetti vengono installati in parallelo
  • ha una community molto attiva

 

NPM vs Yarn: le differenze

Come vi dicevamo nei punti di forza, Yarn riesce ad installare i pacchetti dalla cache locale presente sulla macchina, quindi funzionerebbe anche senza connessione (come Composer fa per PHP). E lo fa anche utilizzando processi paralleli, pur utilizzando il repository centrale di NPM (come fa appunto ..NPM). Yarn genera un file yarn.lock per tenere bloccate le versioni precise dei pacchetti che ci servono.

Migrare a Yarn

Appena fu pubblicato, sempre più developer passarono a Yarn, per i motivi che dicevamo in precedenza. Ma, una su tutte, la selezione delle versioni pacchetti lo rende preferibile sia nei piccoli che nei grandi progetti.

Problemi di Yarn

Uno dei problemi, oramai sorpassati, di Yarn è quello che lo rende incompatibile con versioni di Node js precedenti alla 5. Non dovrebbe essere più un problema per i nuovi progetti (Node js è alla versione 16), ma potrebbe per i progetti più vecchi.

Installazione di Yarn

Yarn offre molteplici metodi di installazione: utilizzare brew, Chocolatey (su Windows) o dal repository Linux. Nel nostro caso, vedremo quest’ultima modalità di installazione:

sudo apt-get install yarn

Rimuoviamo poi la directory node_modules ed installiamo i pacchetti con Yarn:

yarn install

Yarn scaricherà i pacchetti e li manterrà in cache localmente, permettendo, alle future installazioni, l’installazione del pacchetto senza ripetere il download. Nel caso non lo trovasse, lo scaricherà dal repository remoto.

Installiamo pacchetti con Yarn

Per installare un pacchetto eseguiamo il comando:

yarn add nomepacchetto

Yarn provvederà ad installare i pacchetti ed a creare (o aggiornare) il file package-lock.json e yarn.lock.