Node.js

,

NPM

,

NVM

,

ZSH

Comment switcher de version node.js automatiquement ?

Certains de vos projets ont besoin de node version 14, et d'autres version 12. Et vous changez manuellement de version à chaque fois ?

Murat

Murat

20 novembre 2021

Comment switcher de version node.js automatiquement ?

Vous travaillez sur une application react-native qui fonctionne seulement sur node 12.22.0. Et de temps en temps vous switchez de projet pour passer à une application nodejs qui doit avoir pour version minimum la version 16.13.0.

Vous avez déjà heureusement installé (Node Version Manager, nvm)[https://github.com/nvm-sh/nvm]. Mais c’est quand même fatiguant de tout le temps saisir :

cd mon-projet-mobile
nvm use 12.22.0
...
cd mon-appli-node
nvm use 16.13.0

Vous êtes d’accord ?

C’est là qu’entre en jeu, le fichier .npmrc

Le fichier .npmrc, à la racine de votre projet, permet de définir la version qui node par défaut du projet.

Essayez :

node -v > .nvmrc

Cela va générer automatiquement un fichier nvmrc avec la version actuelle de votre node.

v12.22.0

Maintenant si vous vous rendez sur votre dossier, puis faites :

nvm use

La version de votre node va être automatiquement switché pour celle du projet. Pratique, mais pas assez car cela nécessite une étape manuelle.

Autoload avec .zshrc

Que vous utilisez zsh ou bash, vous pouvez rajouter quelques lignes de configuration afin de load automatiquement la version du .nvmrc local.

J’utilise zsh, donc la configuration suivante va être pour ceux qui l’utilisent aussi. Pour les autres, je vous laisse regarder (ce lien)[https://github.com/nvm-sh/nvm#deeper-shell-integration].

Ajoutez ce bloc de ligne juste après l’initalisation de .nvm :

autoload -U add-zsh-hook
load-nvmrc() {
local node_version="$(nvm version)"
local nvmrc_path="$(nvm_find_nvmrc)"
if [ -n "$nvmrc_path" ]; then
local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")
if [ "$nvmrc_node_version" = "N/A" ]; then
nvm install
elif [ "$nvmrc_node_version" != "$node_version" ]; then
nvm use
fi
elif [ "$node_version" != "$(nvm version default)" ]; then
echo "Reverting to nvm default version"
nvm use default
fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc

Fermez vos terminals puis rouvrez-les, puis admirez le résultat !

Maintenant votre version de node va automatiquement changé selon le dossier où vous vous trouvez ! Pratique !

Merci à @alexventuraio pour cette vidéo.

Technologies dans cet article ...

Back-End

Node.js

Node.js