Catégories
Devops

NVM Nodejs

NVM Node Version Manager permet de disposer de plusieurs versions de Nodejs sur la même machine. Cela permet de développer (ou exploiter) des applications Node.js ayant des besoins différents en terme de version. NVM a été conçu à l’origine pour tourner sur des OS Linux et OS X (et donc aussi WSL sous Windows 10), mais il existe une version NVM Windows.

Installation et mise à jour par wget (en cas d’erreur de certificats utiliser l’argument –no-check-certificate de wget), et un prérequis à cette installation est d’avoir git :

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

Listing

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            # liste les versions installées en local, les alias, celle par défaut et liste les 3 dernières LTS dispo
nvm ls-remot      # liste les versions dispo 
nvm ls-remote --lts|grep -i latest

Utilisation

nvm install 8.1.2
nvm use node                  # utiliser la dernière version installée de Node
nvm use 8.1                   # utiliser la dernière version parmis les v8.1.x installées
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 alias                 # liste les alias de versions
nvm alias fav 10.3.0       # cré ou redéfini un alias "fav" sur la version spécifiée
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 use fav
nvm unalias fav

Notes

Lors d’un npm i -g  les packages installés sont placés dans l’arborescence de la version en cours… ne seront donc plus disponible « globalement » si on switch de version.
Remarque : depuis npm 5.3 et l’apparition de npx, il y a encore moins de raison d’installer un quelconque outil en global.

Astuces

Path

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 systemwide à ces binaires. Il est alors possible de simplement créer des symlinks pour les rendre disponibles 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"

Yarn avec yvm

Yarn dispose également de son Version Manager yvm qui permet d’installer et d’utiliser à l’instar de nvm des versions de yarn différentes en fonction des projets.