NVM (Node Version manager) avec --lts
Le NVM a été mentionné à : https://askubuntu.com/a/441527/52975 mais voici un exemple d'utilisation plus complet, y compris le bon sens --lts
qui installe la dernière version du support à long terme de Node, qui est probablement celle que vous voulez si vous n'avez pas d'exigence plus spécifique.
Installez NVM et la dernière version de Node LTS :
curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | sh
source ~/.nvm/nvm.sh
nvm install --lts
nvm use --lts
npm --version
Maintenant, testez-le avec un paquet factice :
npm install --global vaca
vaca
Puisque le sourcing doit être fait pour chaque nouveau Shell, le hacks install Shell ajoute un peu de sourcing automatique à la fin de vos .barshrc
. Cela fonctionne, mais je préfère supprimer celui qui est ajouté automatiquement et ajouter le mien :
f="$HOME/.nvm/nvm.sh"
if [ -r "$f" ]; then
. "$f" &>'/dev/null'
nvm use --lts &>'/dev/null'
fi
Avantages :
-
vous permet d'utiliser plusieurs versions de Node et sans sudo
-
est analogue à Ruby RVM et Python Virtualenv, largement considérés comme les meilleures pratiques dans les communautés Ruby et Python.
-
télécharge un binaire précompilé si possible, sinon il télécharge les sources et en compile un pour vous.
Nous pouvons facilement changer de version de nœud avec :
nvm install 0.9.0
nvm install 0.9.9
nvm use 0.9.0
node --version
#v0.9.0
nvm use 0.9.9
node --version
#v0.9.9
Vous pouvez ensuite utiliser un suivi git .nvmrc
pour indiquer la version du nœud requise pour un projet donné : https://stackoverflow.com/questions/24869959/how-do-i-specify-a-local-version-of-node-for-a-project/54503474#54503474
Avec cette configuration, vous obtenez par exemple :
which node
donne :
/home/ciro/.nvm/versions/node/v0.9.0/bin/node
et :
which vaca
donne :
/home/ciro/.nvm/versions/node/v0.9.0/bin/vaca
et si nous voulons utiliser le module installé globalement :
npm link vaca
node -e 'console.log(require.resolve("vaca"))'
donne :
/home/ciro/.nvm/versions/node/v0.9.0/lib/node_modules/vaca/index.js
ainsi nous voyons que tout est complètement contenu dans la version spécifique du nœud.
Testé dans Ubuntu 17.10.