Administrar versiones de Node.js con nvm

Un administrador de versiones, como su nombre lo indica, permite administrar diferentes versiones de la tecnología o lenguaje de programación en el sistema. Entre las operaciones que podemos realizar están: instalar nuevas versiones, desinstalar versiones existentes, seleccionar qué versión se va a utilizar y seleccionar la versión por defecto seleccionada en el sistema.

Si ya tiene una versión instalada de Node.js en el sistema, no es necesario desinstalarla para utilizar el administrador de versiones, puesto que inclusive el administrador de versiones la incluye dentro de las opciones que se pueden seleccionar.

Instalación de administrador de versiones

Existen diferentes administradores de versiones para Node.js. Uno de los más populares es nvm, el cual es una utilidad que nos permite administrar las diferentes versiones de Node.js en el sistema, brindando así la facilidad de seleccionar la versión necesaria para cada proyecto.

Instalación en Mac OS

Instalación de Homebrew

Mac OS cuenta con un programa muy popular para administrar diferentes paquetes llamada brew. Para instalarla, abrimos la terminal de Mac OS y ejecutamos el siguiente comando:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Durante el proceso de instalación, si es necesario, el instalador preguntará por su contraseña para establecer los permisos necesarios para completar satisfactoriamente la instalación.

Terminada la instalación podemos comprobar en la terminal la versión instalada con el siguiente comando:

brew -v

En la página oficial de Homebrew está la información detallada sobre el proceso y los posibles problemas asociados a la misma.

Instalación de nvm

Una vez instalado brew procedemos a instalar nvm:

brew install nvm

Terminada la instalación, podemos comprobar en la terminal la versión instalada con el siguiente comando:

nvm -v

Lo más probable es que nvm requiera realizar una configuración adicional, así que debes seguir las recomendaciones indicadas una vez finalice el proceso de instalación

Adicionalmente se recomienda reiniciar la sesión de la terminal.

En el repositorio oficial de nvm está toda la información detallada sobre el proceso de instalación y los posibles problemas asociados con la misma.

Instalación en Windows

Instalación de cmder

Versiones anteriores a Windows 10 ofrecen una terminal muy básica; pero el proyecto cmder ofrece una terminal con muchas opciones dentro de ella, la mayoría de comandos de los sistemas Linux, git y muchas otras herramientas.

Para instalarlo, seguimos los siguientes pasos:

  • Visitar la página oficial de cmder
  • Hacer clic en el enlace "Download Full"
  • Descomprimir el archivo descargado en una ubicación conocida como: Archivos de programa
  • Hacer un acceso directo en el Escritorio del archivo cmder.exe
  • Se recomienda ejecutar el programa con permisos de Administrador

En el repositorio oficial de cmder está toda la información detallada sobre el proceso de instalación y los posibles problemas asociados a la misma.

Instalación de nvm para Windows

La utilidad de nvm no se encuentra disponible para Windows, pero existe un proyecto muy similar que cumple el mismo objetivo.

Para instalarlo seguimos los siguientes pasos:

  • Visitar la página oficial del proyecto nvm for Windows
  • Hacer clic en el enlace "Download Now"
  • Luego en el listado hacer clic en el enlace "nvm-setup.zip" de la versión más reciente
  • Descomprimir el archivo descargado
  • Ejecutar el instalador "nvm-setup.exe"

En el repositorio oficial de nvm for Windows está toda la información detallada sobre el proceso de instalación y los posibles problemas asociados a la misma.

Administración de versiones

Una vez instalado nvm procedemos a instalar la versión estable de Node.js; para lo cual ,ejecutamos en la terminal el siguiente comando:

nvm install stable

Esta es la salida en la pantalla del comando anterior:

Downloading and installing node v12.13.1...
Downloading https://nodejs.org/dist/v12.13.1/node-v12.13.1-darwin-x64.tar.xz...
######################################################################## 100.0%
Computing checksum with shasum -a 256
Checksums matched!
Now using node v12.13.1 (npm v6.12.1)

Terminado el proceso de instalación verificamos en la terminal la versión instalada y activa en el sistema, con el siguiente comando:

node -v

Esta es la salida en la pantalla del comando anterior:

v12.13.1

Versiones de Node.js y Long Term Support (LTS)

Las diferentes versiones de Node JS se pueden verificar en la siguiente página Node JS Release; allí podremos ver el ciclo de vida de cada una de ellas y cuál es el estado del Long Term Support (LTS), que indica desde y hasta cuando se realizan las actualizaciones de mantenimiento y seguridad de cada una de las versiones.

A modo de ejemplo vamos a instalar una versión anterior:

nvm install 10

Terminado el proceso de montaje verificamos en la terminal la versión instalada con el siguiente comando:

node -v

Como podemos observar, la versión reciente instalada ha quedado como la versión activa en esta sesión de la terminal. Si se abre una nueva sesión de la terminal quedará seleccionada la versión que se tiene indicada por defecto en el sistema. Es decir, que se pueden tener diferentes versiones de Node.js seleccionadas cada una de ellas en una sesión diferente de la terminal. Lo anterior es una enorme ventaja a la hora de ejecutar varios proyectos al mismo tiempo, que necesiten diferentes versiones.

Para listar todas las versiones instaladas localmente por nvm, ejecutamos el siguiente comando:

nvm ls

Esta es la salida en la pantalla del comando anterior:

v8.16.1
v10.17.0
-> v12.13.1
v13.2.0
default -> 10 (-> v10.17.0)
node -> stable (-> v12.13.1) (default)
stable -> 12.13 (-> v12.13.1) (default)
iojs -> N/A (default)
lts/* -> lts/erbium (-> v12.13.1)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.16.2 (-> N/A)
lts/dubnium -> v10.17.0
lts/erbium -> v12.13.1

A continuación, daré diferentes anotaciones sobre este listado anterior:

  • El símbolo de -> indica qué versión está seleccionada actualmente en la sesión de la terminal
  • La versión seleccionada por defecto con una nueva sesión de la terminal es la que está marcada con default
  • La versión estable es stable
  • Sobre el soporte LTS, están marcadas con el prefijo lts.

iojs fue en algún momento una copia del proyecto de Node.js, pero afortunadamente se unieron nuevamente y publicaron la versión 4 de Node.js; por ello la razón del salto de la versión 0.12 a la versión 4

Una vez instaladas diferentes versiones mediante nvm, se puede seleccionar la versión con la cual se desea trabajar, en este caso seleccionamos la versión estable con el siguiente comando:

nvm use stable

El parámetro después del comando use es la versión que se desea seleccionar

Es posible seleccionar la versión instalada en el sistema con nvm use system

Vamos a seleccionar una versión como predeterminada para cada nueva sesión de la terminal, por ejemplo, la versión estable. Para ello ejecutamos el siguiente comando:

nvm alias default stable

Si usted lo desea, existe la posibilidad de crear más alias con nvm para las diferentes instalaciones

Para listar todas las versiones que nvm puede instalar en el sistema:

nvm ls-remote

Seleccionar automáticamente la versión correspondiente para cada proyecto

Sería muy dispendioso, cada vez que vayamos a trabajar en un proyecto, seleccionar la versión necesaria (si no es la predeterminada), e inclusive, es posible confundir u olvidar cuál era la versión necesitada.

Para esto nvm tiene una solución, y es crear en la raíz del directorio del proyecto un archivo con el nombre .nvmrc y en su contenido colocar solamente el número de la versión de Node.js que corresponda a dicho proyecto. Así, cuando se ingrese al directorio del proyecto mediante la terminal nvm, automáticamente seleccionará la versión especificada en el archivo .nvmrc, por ejemplo:

10

Como podemos ver el contenido del archivo solo tiene el número de la versión de Node.js a utilizar en ese proyecto, en este caso es la versión anterior a la instalada por defecto.