Le package NVM (Node Version Manager) est un gestionnaire de versions pour Node.js, un environnement d'exécution JavaScript côté serveur. Son principal objectif est de faciliter la gestion et la sélection des versions de Node.js sur votre système. Voici un résumé de ce à quoi sert le package NVM :
Gestion des versions : NVM permet d'installer plusieurs versions différentes de Node.js sur votre machine. Cela vous permet de travailler sur différents projets qui nécessitent des versions spécifiques de Node.js sans conflits.
Sélection de la version : Vous pouvez facilement basculer entre les versions de Node.js installées à l'aide de NVM. Cela se fait en utilisant des commandes simples pour activer une version spécifique.
Mise à jour aisée : NVM simplifie la mise à jour de Node.js. Vous pouvez mettre à jour NVM lui-même et choisir de mettre à jour ou de rétrograder Node.js vers une nouvelle version sans avoir à désinstaller et réinstaller manuellement.
Isolation des environnements : NVM permet également de créer des environnements isolés, appelés "nœuds" (nodes), pour chaque projet, en spécifiant une version de Node.js spécifique. Cela garantit que les dépendances et les packages installés pour un projet particulier ne perturbent pas d'autres projets.
Installer nvm
En bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
En zsh
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | zsh
Si ensuite la commande
nvm
est introuvable, redémarrer le terminal
Installer la dernière version de Node
nvm install node
Installer une version spécifique de Node
nvm install 14.18.1
Lister les version installées
nvm ls
Utiliser une version déjà installée (non persistant)
Attention, si le on quitte le terminal, c'est la version par défault qui sera prise
nvm use 18.7.0
Utiliser une version déja installée (persistant)
nvm alias default 19.4.0
Désinstaller une version installée
nvm uninstall 14.18.1
Utiliser une version spécifique dans un projet
Dans le projet en développement, à la racine, créer un fichier .nvmrc
v14.18.1
Puis taper la commande :
nvm use
Automatiser la détection du fichier .nvmrc au sein du projet en ajoutant les paramètres ci-dessous dans le fichier $HOME/.zshrc
# place this after nvm initialization!
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
Automatiser la détection du fichier
.nvmrc
au sein du projet en ajoutant les paramètres ci-dessous dans le fichier$HOME/.bashrc
cdnvm() {
command cd "$@";
nvm_path=$(nvm_find_up .nvmrc | tr -d '\n')
# If there are no .nvmrc file, use the default nvm version
if [[ ! $nvm_path = *[^[:space:]]* ]]; then
declare default_version;
default_version=$(nvm version default);
# If there is no default version, set it to `node`
# This will use the latest version on your machine
if [[ $default_version == "N/A" ]]; then
nvm alias default node;
default_version=$(nvm version default);
fi
# If the current version is not the default version, set it to use the default version
if [[ $(nvm current) != "$default_version" ]]; then
nvm use default;
fi
elif [[ -s $nvm_path/.nvmrc && -r $nvm_path/.nvmrc ]]; then
declare nvm_version
nvm_version=$(<"$nvm_path"/.nvmrc)
declare locally_resolved_nvm_version
# `nvm ls` will check all locally-available versions
# If there are multiple matching versions, take the latest one
# Remove the `->` and `*` characters and spaces
# `locally_resolved_nvm_version` will be `N/A` if no local versions are found
locally_resolved_nvm_version=$(nvm ls --no-colors "$nvm_version" | tail -1 | tr -d '\->*' | tr -d '[:space:]')
# If it is not already installed, install it
# `nvm install` will implicitly use the newly-installed version
if [[ "$locally_resolved_nvm_version" == "N/A" ]]; then
nvm install "$nvm_version";
elif [[ $(nvm current) != "$locally_resolved_nvm_version" ]]; then
nvm use "$nvm_version";
fi
fi
}
alias cd='cdnvm'
cd "$PWD"
Penser à redémarrer le projet pour la bonne prise en compte des nouveaux paramètres