NVM – Instalar múltiples versiones de Node.js en Linux

Node Version Manager (NVM abreviado) es un simple script de bash para gestionar múltiples versiones activas de node.js en tu sistema Linux. Te permite instalar múltiples versiones de node.js, y ver todas las versiones disponibles para la instalación y todas las versiones instaladas en tu sistema.

Nvm también soporta la ejecución de una versión específica de node.js y puede mostrar la ruta al ejecutable donde fue instalado, y mucho más.

En este artículo, explicaremos cómo instalar Node Version Manager (NVM) para gestionar múltiples versiones activas de node.js en tu distribución Linux.

Instalar NVM (Node Version Manager) en Linux

Para instalar o actualizar nvm en tu distribución de Linux, puedes descargar el script de autoinstalación utilizando las herramientas de línea de comandos curl o wget según se muestra.

# curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
OR
# wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

El script de autoinstalación anterior clona el repositorio de nvm en ~/.nvm en tu directorio de inicio y agrega los comandos de origen requeridos a tus scripts de inicio de shell, es decir, ~/.bash_profile, ~/.zshrc, ~/.profile o ~/.bashrc, dependiendo del programa de shell que estés utilizando, como se muestra en la siguiente salida.

Install NVM in Linux
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 15916  100 15916    0     0  34227      0 --:--:-- --:--:-- --:--:-- 34301
=> Downloading nvm from git to '/root/.nvm'
=> Cloning into '/root/.nvm'...
remote: Enumerating objects: 359, done.
remote: Counting objects: 100% (359/359), done.
remote: Compressing objects: 100% (305/305), done.
remote: Total 359 (delta 40), reused 168 (delta 28), pack-reused 0
Receiving objects: 100% (359/359), 219.46 KiB | 6.86 MiB/s, done.
Resolving deltas: 100% (40/40), done.
* (HEAD detached at FETCH_HEAD)
  master
=> Compressing and cleaning up git repository

=> Appending nvm source string to /root/.bashrc
=> Appending bash_completion source string to /root/.bashrc
=> You currently have modules installed globally with `npm`. These will no
=> longer be linked to the active version of Node when you install a new node
=> with `nvm`; and they may (depending on how you construct your `$PATH`)
=> override the binaries of modules installed with `nvm`:
...

Una vez que la instalación esté completa, cierra tu ventana de terminal actual y abre una nueva. O simplemente carga tu archivo de perfil de shell para cargar nvm. Por ejemplo, si estás utilizando bash, ejecuta el siguiente comando:

$ source ~/.bashrc
OR
$ source ~/.profile

A continuación, verifica si nvm ha sido instalado en tu sistema usando el siguiente comando.

# command -v nvm

nvm

Mostrará la salida como ‘nvm‘ si la instalación fue exitosa.

Instalar Múltiples Versiones de Node.js Usando NVM

Ahora es el momento de aprender cómo usar el Gestor de Versiones de Node en Linux. Para descargar, compilar e instalar la última versión de node, ejecuta el siguiente comando:

# nvm install node 

Ten en cuenta que en el comando anterior, “node” es un alias para la última versión.

Install Latest Node Version in Linux
Downloading and installing node v20.0.0...
Downloading https://nodejs.org/dist/v20.0.0/node-v20.0.0-linux-x64.tar.xz...
########################################################################## 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v20.0.0 (npm v9.6.4)
Creating default alias: default -> node (-> v20.0.0)

Para instalar una versión específica de “node”, primero lista las versiones de node disponibles y luego instala la versión como se muestra.

# nvm ls-remote
# nvm install 19.0.0  
Install Specific Node Version in Linux
Downloading and installing node v19.0.0...
Downloading https://nodejs.org/dist/v19.0.0/node-v19.0.0-linux-x64.tar.xz...
########################################################################## 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v19.0.0 (npm v8.19.2)

Una vez que hayas instalado una versión de Node.js utilizando nvm, el sistema debería apuntar ahora a las versiones de Node.js y npm bajo nvm. Puedes verificar la ubicación del comando/binario de node y npm que se está utilizando ejecutando el comando which de la siguiente manera:

# which node
/root/.nvm/versions/node/v20.0.0/bin/node

# which npm
/root/.nvm/versions/node/v20.0.0/bin/npm

# node -v
v20.0.0

# npm -v
9.6.4

Listado de Versiones de Node.js Instaladas

Puedes verificar todas las versiones instaladas con el siguiente comando:

# nvm ls
List Installed Node Versions in Linux
->      v19.0.0
        v20.0.0
         system
default -> node (-> v20.0.0)
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v20.0.0) (default)
stable -> 20.0 (-> v20.0.0) (default)
lts/* -> lts/hydrogen (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.12 (-> N/A)
lts/fermium -> v14.21.3 (-> N/A)
lts/gallium -> v16.20.0 (-> N/A)
lts/hydrogen -> v18.16.0 (-> N/A)

Elegir la Versión de Node para un Proyecto

Aquí es donde nvm se vuelve interesante. Ahora puedes usar nvm para elegir la versión de Node.js a utilizar para cada proyecto en el que estás trabajando, según los requisitos. Veamos cómo hacerlo, como se explica a continuación.

Abre múltiples terminales y muévete a los directorios del proyecto. Para esta guía, tenemos dos proyectos bajo ~/proyectos/app-server y ~/proyectos/test-ui que requieren la versión de Node 19.0.0 y 20.0.0 respectivamente.

------------ Project 1 ------------ 
$ cd ~/projects/api-server
$ nvm use 19.0.0
$ node -v

------------ Project 2 ------------
$ cd ~/projects/test-ui
$ nvm use 20.0.0
$ node -v
Important: Note that when switching between different versions of Node.js, any global npm packages that you have installed will not work. This is because the multiple Node.js version installations are completely independent.

Por ejemplo, si tienes un paquete global instalado cuando la versión 19.0.0 está activa, cuando cambies a la versión 20.0.0, necesitarás reinstalar el paquete global bajo la nueva versión.

Es importante destacar que puedes ver la ruta al ejecutable donde se instaló una versión específica de Node de la siguiente manera:

# nvm which 20.0.0
# nvm which 19.0.0
# nvm which system  #check system-installed version of a node using “system” alias

Establecer la versión predeterminada de Node.js en Linux

Además, para establecer manualmente una versión predeterminada de node para ser utilizada en cualquier nueva shell, use el alias “default” como se muestra a continuación.

# nvm alias default 20.0.0
# nvm alias default system
# nvm alias default 19.0.0
Note: You can create a .nvmrc initialization file in your project root directory (or any parent directory) and add a node version number or any other flags or usage options that nvm understands, in it. Then use some of the commands we have just looked at above to operate with the specified version in the file.

Desinstalar la versión de Node.js en Linux

Para desinstalar o eliminar una versión de Node.js, emita el siguiente comando (no olvide reemplazar 19.0.0 con el número de versión):

# nvm uninstall 19.0.0

Desinstalar NVM en Linux

Para eliminar nvm manualmente de su sistema, ejecute los siguientes comandos:

# rm -rf "$NVM_DIR"
OR
# rm -rf ~/.nvm

A continuación, edite ~/.bashrc (o el archivo de configuración de perfil de shell correspondiente, como se indica arriba) y elimine las siguientes líneas de configuración:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[[ -r $NVM_DIR/bash_completion ]] && \. $NVM_DIR/bash_completion

Para obtener más información, consulte nvm --help o vaya al repositorio de Node Version Manager Github: https://github.com/nvm-sh/nvm.

¡Eso es todo! Node Version Manager es un simple script de bash para administrar múltiples versiones activas de node.js en su sistema Linux. Utilice el formulario de comentarios a continuación para hacer preguntas o compartir sus comentarios con nosotros.

Source:
https://www.tecmint.com/nvm-install-multiple-nodejs-versions-in-linux/