Chiunque si sia trovato (per un motivo o per l’altro) a sviluppare una complessa applicazione JavaScript si sarà probabilmente imbattuto in NPM. Che cos’è questo NPM? Semplicemente si tratta del package manager sviluppato per il linguaggio JavaScript (sicuramente non l’unico ma probabilmente il più diffuso), lo strumento tramite il quale organizzare, condividere e ricevere librerie JavaScript sviluppate internamente oppure da altre persone. Ancora più semplicemente potremmo dire che NPM è il corrispettivo di Bower/Composer per il linguaggio PHP o di RubyGems per il linguaggio Ruby.

Utilizzando NPM potremmo consultare e scaricare i package (i pacchetti o i moduli – ormai questi termini sono utilizzati come sinonimi persino dalla guida ufficiale di NPM che potete trovare a questo indirizzo) disponibili all’interno del registro di NPM consultabile all’indirizzo: npmjs.com.

Installazione

L’installazione di NPM differisce a seconda del sistema operativo in uso e della versione prescelta, per questo motivo consiglio di fare riferimento alla documentazione ufficiale. A partire dalle ultime versioni di Node.js (potete leggere di più a proposito di Node.js nell’articolo dedicato) NPM viene installato automaticamente a seguito dell’installazione di Node.js, pertanto potreste già disporre del packet manager sulla vostra macchina, per scoprirlo vi basterà eseguire il seguente comando all’interno del terminale:

nmp -v

Se quest’ultimo restituirà la versione dell’applicativo non dovrete preoccuparvi di eseguire alcuna operazione. Eventualmente potreste verificare la presenza di un aggiornamento eseguendo il comando:

npm install npm@latest -g

Comandi Principali

NPM mette a disposizione una serie di comandi utili alla gestione e all’installazione delle librerie JavaScript, tali comandi possono essere eseguiti all’interno del terminale presente nel nostro sistema (CMD o BASH). Il primo comando che voglio segnalare (il terzo se consideriamo quelli destinati all’installazione e all’aggiornamento di NPM) riguarda l’accesso al manuale del package manager, consultabile in questo modo:

node help <comando>

# oppure
node <comando> -h

In questo modo potremo sempre verificare il proposito di un comando e l’elenco degli eventuali parametri aggiuntivi che accetta. Il compito principale di un packet manager è quello di permettere l’installazione dei moduli. Tali moduli possono essere ricercati sul sito ufficiale oppure direttamente dalla nostra linea di comando.

npm search <package>

Al comando search possono essere allegate numerose opzioni, vi invito consultare la documentazione ufficiale per maggiori informazioni (oppure ad eseguire il sopracitato comando di aiuto). Vediamo di seguito un esempio di chiamata al comando search:

# esempio
npm search json

Risultato ottenuto:

Una volta scelto il package interessato, supponiamo “json”, possiamo procedere con la sua installazione. Utilizzando il comando install, associato all’opzione -g, richiederemo l’installazione globale del pacchetto “json”, tale pacchetto sarà quindi installato all’interno del nostro sistema e richiamabile direttamente da linea di comando.

npm install -g json

Nell’eseguire il comando precedente non abbiamo specificato alcuna versione particolare del package “json”. Questo porterà all’installazione dell’ultima versione disponibile dello stesso, in alternativa possiamo decidere di richiedere l’installazione di una specifica versione:

npm install -g json@versione

Tutte le librerie che andremo ad installare tramite NPM verranno posizionate all’interno di una certa directory del nostro sistema la quale è definita all’interno del nostro file di configurazione. Possiamo prendere visione di tale percorso eseguendo il comando config get in questo modo:

npm config get prefix

# Resituisce:
C:\Users\mark116\AppData\Roaming\npm

Infine, vediamo i principali comandi che possono essere eseguiti sui package a livello globale:

  • list, restituisce la lista dei package disponibili;
  • update, aggiorna il pacchetto passato come argomento;
  • outdated, verifica la presenza di aggiornamenti;
  • unistall, rimuove un pacchetto come argomento.

Nel frammento di codice sottostante sono proposti alcuni esempi pratici:

# Elenco dei package installati globalmente (l'opzione --depth rimuove le eventuali dipendenze)
npm list -g --depth=0

# Aggiorna il pacchetto
npm update -g <pacchetto>

# Verifica la presenza di eventuali aggiornamenti
npm outdated -g --depth=0

# Rimuove il pacchetto
npm uninstall -g <pacchetto>