NVM Nodejs
nvm
(pour Node Version Manager) permet aux développeurs d'installer et d'utiliser plusieurs versions de Nodejs simultanément.
Cela permet par exemple d'utiliser 1 version de nodejs spécifique dans chaque projet, et cela peut être facilité via l'usage d'un fichier .nvmrc
qui permet de spécifier (la version de nodejs souhaitée) et l'appliquer avec la commande nvm use
.
Installation et mise à jour par wget, et un prérequis à cette installation est d'avoir git
:
wget -O- --no-check-certificate wget https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
(en cas d'erreur de certificats utiliser l'argument --no-check-certificate
de wget comme indiqué ci-dessus)
Usage de vmc
Installation et choix d'une version
nvm install 17.4.0 # installe la version
nvm use # utilise la version sépcifiée dans le fichier .nvmrc
nvm use 17.4 # utiliser la dernière version parmis les v17.4.x installées```
nvm use node # utiliser la dernière version installée de Node
nvm run 10.3.0 app.js # lance l'application app.js avec la version spécifiée
nvm exec 10.3.0 node app.js # lance l'application app.js en définissant la version à utiliser dans le shell d'exécution
Alias de versions
nvm permet d'aliaser les versions, c'est à dire créer une sorte de raccourci, et est surtout utilisé pour définir l'alias defaut qui est utilisé par défaut.
nvm alias # liste les alias de versions
nvm alias default 8.11.2 # défini l'alias default sur la version spécifiée
nvm alias default node # défini l'alias default sur la dernière version dispo (LTS ou non)
nvm alias fav 10.3.0 # cré ou redéfini un alias "fav" sur la version spécifiée
nvm use fav
nvm unalias fav
Lister les version de Nodejs
nvm ls # liste les versions installées en local, les alias, celle par défaut etc
nvm current # indique la version courante
nvm which current # indique le PATH de la version courante (ou de la version spécifiée)
nvm ls-remote # liste les versions disponibles
nvm ls-remote --lts|grep -i latest
Remarques
Installation globale de package npm
Lors d'une installation globale d'un package npm via npm i -g
, les fichiers du package installé sont placés dans l'arborescence de la version actuellement sélectionnée nvm current
.
Ces packages npm ne seront donc plus disponible si on switch de version avec un nvm use
.
Remarque : depuis npm 5.3 et l'apparition de npx
, il y a encore moins de raison d'installer un quelconque outil en global en dehors des outils comme jest
ou prettier
dans le cas de leurs utilisation avec VSCode par ex.
Astuce
Les binaires node et npm n'étant pas accessibles globalement (et c'est tout l’intérêt de nvm
), il peut toutefois s'avérer utile (comme sur les serveur de recette/prod) d'avoir un accès systèm-wide à ces binaires.
Il est alors possible de simplement créer des symlinks pour les rendre dispo dans le PATH (credit):
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/node" "/usr/local/bin/node"
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npm" "/usr/local/bin/npm"