Perché nvm è il miglior gestore di versioni per Node.js
nvm
Installare Node.js è un’attività semplice: basta andare nella pagina Download del progetto e scaricare un pacchetto precompilato per il nostro sistema operativo. Esiste un metodo ancora più semplice per installare Node.js, ed è quello basato su nvm
, un gestore di versioni di Node.js. Grazie a nvm
una nuova versione di Node.js può essere installata con i tre comandi qui sotto.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
nvm install 20
node -v
- (riga 1) installate un gestore delle versioni di Node.js (in questo caso nvm, ma ne esistono anche altri)
- (riga 2) installate la versione 20 di Node.js (l’ultima disponibile per quella serie)
- (riga 3) lanciate Node.js facendo stampare la sua versione: è tutto pronto per sviluppare
Questo strumento permette di fare molto di più della semplice installazione di Node.js. Per questo motivo ho dedicato un intero capitolo (il 2) del libro su Node.js alla spiegazione di come gestire le versioni, capire il loro significato (pari VS dispari) e come passare da una all’altra senza mal di testa.
Infatti grazie a nvm
potete passare da una versione all’altra di Node.js usando, per esempio, il comando nvm use 22
. Tutte le versioni che installerete attrevero nvm
non andranno in conflitto fra loro. Saper usare uno strumento come questo ci permette di lavorare nella massima tranquillità a più progetti, anche sviluppati per versioni diverse di Node.js: per passare da una versione all’altra basta un comando.
Automatizzare nvm
nvm
è implementato come una serie di script bash (POSIX) e non ha bisogno di un compilatore o un binario per funzionare.
Per questo motivo, oltre ad essere semplice da installare, è anche facile da configurare e adattare alla vostre esigenze.
Per esempio, se usate la shell zsh
potete aggiungere questo script nel vostro file .zshrc
per fare in modo che nvm
passi in automatico
alla versione di Node.js descritta nei file .nvmrc
che si trovano all’interno dei progetti.
# place this after nvm initialization!
autoload -U add-zsh-hook
load-nvmrc() {
local nvmrc_path
nvmrc_path="$(nvm_find_nvmrc)"
if [ -n "$nvmrc_path" ]; then
local nvmrc_node_version
nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")
if [ "$nvmrc_node_version" = "N/A" ]; then
nvm install
elif [ "$nvmrc_node_version" != "$(nvm version)" ]; then
nvm use
fi
elif [ -n "$(PWD=$OLDPWD nvm_find_nvmrc)" ] && [ "$(nvm version)" != "$(nvm version default)" ]; then
echo "Reverting to nvm default version"
nvm use default
fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc
Quindi, non appena si esegue cd my-node-project
, se lo script troverà il file .nvmrc
farà partire nvm
per passare alla versione indicata.
Inoltre, se questa non è presente localmente, sarà anche installata in automatico.
Potete trovare il codice per le altre shell nel README del progetto.
Altri gestori di versioni di Node.js
Nuovi gestori delle versioni di Node.js escono in continuazione:
C’è l’imbarazzo della scelta e ognuno ha le sue particolarità.
Perché usare nvm
Le alternative a nvm
sono molte e tutte proclamano di essere le migliori.
La differenza, però, è sempre nei dettagli, come il supporto alla gestione delle versioni dei package manager in Volta.
Nella documentazione viene detto che la funzionalità è supportata ma su Github non sembra essere così. Non è chiaro poi perché voler usare uno strumento esterno quando la stessa funzionalità viene offerta da Node.js stesso attraverso Corepack (ancora experimental però).
La OpenJS foundation e Node.js
Un altro motivo, da non sottovalutare, è che nvm
è supportato direttamente dalla OpenJS Foundation e che è lo strumento usato dal team di Node.js anche per la gestione dei test.