kdao design

Node Version Manager

7 minute(s) de lecture
Thématique: Node
Node Version Manager NVM

Bonjour ! 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

kdao design logo
Heure locale
3:10:21 PM