×
Cómo instalar y usar NVM (Node Version Manager)

Cómo instalar y usar NVM (Node Version Manager)


Al momento de utilizar Node.js, una utilidad que resulta muy buena es NVM o Node Version Manager, es una magnífica herramienta para programadores y administradores de sistemas que trabajan con Node.js, sobre todo si requieren trabajar con varias versiones diferentes de Node.js.

Su función principal es administrar las diferentes versiones de Node.js instaladas en un  mismo sistema, lo cual facilita el despegue de varios proyectos  en un mismo servidor, que pueden requerir cada uno versiones diferentes de Node.js, lo cual puede deberse a necesitar distintas dependencias o requisitos de compatibilidad. Al permitir la instalación y cambio rápido entre diferentes versiones de Node.js, NVM ofrece un entorno de desarrollo más simple y potente.

¿Qué es exactamente Node.js?

Node.js es un entorno de ejecución JavaScript que posibilita a los programadores desarrollar diferentes tipos de aplicaciones web utilizando el mismo lenguaje tanto en frontend como en backend; está construido a partir  en el motor de JavaScript V8 de Google Chrome.

Este lenguaje usa de forma nativa un enfoque orientado a eventos, a diferencia de otros que se logra a través de librerías externas, en el caso de Node.js lo hace directamente a través del propio lenguaje que ya brinda la forma de hacerlo evitando dependencias externas, lo convierte en una muy buena opción para proyectos que deban soportar mucha cantidad de conexiones y/o de alto tráfico en tiempo real, esta ventaja le permite a Node.js manejar miles de peticiones de manera mucho más eficiente que otros lenguajes más tradicionales orientados a la web, como ya vimos en nuestro artículo sobre Node.js vs PHP.

Entre los diferentes beneficios de utilizar Node.js es que permite al programador utilizar JavaScript no solo utilizar JavaScript en el frontend, sino también en el backend, al tener la oportunidad de implementar el mismo tipo de lenguaje se torna mucho más rápido y sencillo todo el ciclo de vida del proyecto, desde el desarrollo hasta el mantenimiento posterior de las aplicaciones, sin ninguna duda es una gran ventaja poder utilizar un mismo lenguaje en todo proyecto de software.

Sin embargo, este entorno de desarrollo tan uniforme también tiene inconvenientes debido a que hoy día el software ya no es un monolito como antes, y está dividió en microservicios, es decir un proyecto de software se suele dividir en varios subproyectos y estos pueden tener requerimientos diferentes, por ejemplo diferentes frameworks o librerías que se requieran implementar, debido a eso pueden requerir simultáneamente diferentes dependencias, por ejemplo diferentes versiones de Node.js y allí es donde entra en juego NVM.

¿Qué es NVM?

Como mencionamos antes, NVM es un software que permite gestionar en un mismo equipo diferentes versiones de Node.js, es decir que lo que más destaca del mismo es su capacidad para brindar aislamiento donde cada proyecto puede tener su propia versión de Node.js y sus propias dependencias, lo que si dudas ayuda a prevenir conflictos y problemas de compatibilidad entre los diferentes proyectos.

Además simplifica el proceso de actualización de Node.js y NPM, al permitir que los programadores puedan cambiar fácilmente las versiones de un proyecto, lo que garantiza que puedan aprovechar las últimas características y mejoras sin afectar a proyectos existentes.

Una ventaja sumamente importante de NVM es su compatibilidad multiplataforma, funciona en Linux, macOS y Windows, lo que permite a desarrolladores trabajar en sus propios entornos de la misma forma semejante y lo más parecida posible, a como se haría en producción, independiente que los sistemas operativos sean diferentes, sin dudas esta compatibilidad facilita enormemente el desarrollo y posterior despliegue.

Para resumir, NVM es una opción sumamente atractiva, flexible y poderosa para simplificar la administración de versiones de diferentes versiones de Node.js, mejorando la productividad de los programadores al brindar un entorno de desarrollo más simple.

También es especialmente útil para los administradores de sistemas que tengan que mantener en producción diferente clases aplicaciones que dependan de Node,js, de la misma manera que los programadores necesitan un entorno de desarrollo flexible en el cual trabajar, los administradores necesitan dar soporte a aplicaciones muy variadas, cada una con necesidades y requerimientos muy diferentes.

Además, por eso Node Version Manager permite agregar nuevas versiones que se necesiten, sin afectar en lo más mínimo a aplicaciones que hayan corriendo y que dependan de versiones previas, es decir que agregan nuevas versiones en lugar de sustituir viejas lo cual brinda seguridad en el proceso de actualizaciones y posibilidad de dar marcha atrás si se necesita.

Instalación de NVM

Al momento de escribir este artículo la última versión disponible es la v0.39.7, sin embargo, es posible revisar nuevas versiones aquí, en cuanto a la instalación es muy sencilla tanto en Red Hat/CentOS/Alma Linux como en Ubuntu/Debian, para instalarlo simplemente se necesita ejecutar lo siguiente en la consola:

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

El siguiente paso es recargar la configuración y para eso se ejecuta:

source ~/.bashrc

Para verificar que haya quedado correctamente instalado y configurado, ejecutamos.

nvm --version

Si todo está correcto, el próximo paso es instalar las versiones de node, por ejemplo para instalar la última versión estable de node se ejecuta:

nvm install node

A continuación vamos a ver cómo podemos instalar simultáneamente otras versiones que se necesiten.

Administrando las versiones de Node

En NVM existen diferentes comandos para verificar las versiones disponibles, instalarlas, desinstalarlas y cambiar entre las diferentes versiones, por ejemplo se puede verificar la variedad de versiones disponibles con el siguiente comando:

nvm ls-remote

El comando mostrará una larga lista conteniendo 768 versiones diferentes al momento de escribir este post, de las cuales aquí se muestran solo una parte:

       [...]
        v19.9.0
        v20.0.0
        v20.1.0
        v20.2.0
        v20.3.0
        v20.3.1
        v20.4.0
        v20.5.0
        v20.5.1
        v20.6.0
        v20.6.1
        v20.7.0
        v20.8.0
        v20.8.1
        v20.9.0   (LTS: Iron)
       v20.10.0   (LTS: Iron)
       v20.11.0   (LTS: Iron)
       v20.11.1   (LTS: Iron)
       v20.12.0   (Latest LTS: Iron)
        v21.0.0
        v21.1.0
        v21.2.0

Para seleccionar e instalar cualquiera de ellas basta con escribir el nvm install [version], a modo de ejemplo, para instalar la versión v20.12.0 simplemente se ejecuta:

nvm install v20.12.0

El comando install se puede repetir tantas veces como versiones se necesiten instalar, para poder ver las versiones instaladas de forma simple se puede ejecutar usar el comando ls como veremos a continuación:

nvm ls
NVM muestra las versiones instaladas de Node.JS
Dependiendo de las versiones que se hayan instalado y cuando, la salida será similar a esta:

  • En amarillo se muestran los nombres de versiones LTS disponibles.
  • En rojo se muestran las que no están instaladas
  • En azul las que sí están instaladas
  • Por último en verde la versión que está seleccionada al momento

La versión seleccionada no es la misma que la por defecto, esta última es la que está configurada predeterminadamente, mientras que la seleccionada es la que se haya seleccionado usando el comando use, por ejemplo

 nvm use v20.12.0

NVM permite elegir la versión de Node que queremos usar

En la última captura no solo cambio la versión seleccionada, sino que la versión por defecto también cambio de color debido a que ahora si coincide con la versión por defecto, por lo que ambas aparecen en verde, con el código de colores se puede saber rápidamente la versión seleccionada y las disponibles.

Uno de los principales motivos para usar NVM es justamente poder ejecutar varios proyectos con versiones diferentes, para eso simplemente usamos el parámetro use antes de correr la aplicación en node, por ejemplo:

nvm use v18.19.1
node test1.js &

nvm use v21.7.1
node test2.js &

Es posible usar el comando use tantas veces como se necesita para cambiar de versión, solo afectara a los programas que se ejecuten posteriormente, los que ya se estén ejecutando continuara con las versiones de node con las que hayan sido lanzados.

Otros comandos útiles de NVM

Sin utilizar nvm ls, también es posible conocer la versión seleccionada mediante el comando current:

nvm current

Especialmente útil al momento de automatizar algún proceso, algún script o algún deploy, también disponemos de uninstall para remover versiones que ya no interesan, ya sea porque son versiones viejas como para mantener el servidor saludable sin dependencias innecesarias o simplemente para liberar espacio, para remover una versión, la v8.1.3 a modo de ejemplo, se ejecuta:

nvm uninstall v8.1.3

Simplemente, se debe cambiar por la versión que se quiera eliminar. Tambien existe un comando util para desactivar los cambios realizados con use y volver a la versión por defecto:

nvm deactivate

Siguiendo uno de los ejemplos anteriores se puede implementar:

nvm use v21.7.1
node test2.js &
nvm deactivate

Es decir, se asigna una versión que nos interese, se ejecuta lo que se necesite y se vuelve a la versión por defecto, si bien no es obligatorio si se considera una práctica recomendable

Conclusión

En el artículo de hoy hemos visto que NVM es una herramienta que podemos encontrar como una solución bastante conveniente a un problema para manejar múltiples versiones de Node.js en un mismo sistema, ofreciendo una forma simple de administrar los diferentes requerimientos de versiones entre diferentes proyectos.

NVM ayuda a evitar posibles conflictos de dependencias que no siempre son fáciles de resolver, además su capacidad de manejar diferentes versiones de Node.js y sus dependencias de manera bastante eficiente mejora no solo la productividad de los programadores al simplificar enormemente el entorno de desarrollo en el cual trabajan, sino que también es una forma sencilla y práctica de administrar en producción ambientes para aplicaciones de diferentes dependencias.

¿Te gustó el artículo? Compártelo:

Escrito por Álvaro De León

Desarrollador web / SysAdmin con amplia experiencia en optimización de aplicaciones, automatización, seguridad de sistemas, así como tweaking de rendimiento. Siempre disponible para ayudarte desde nuestro Chat online y el sistema de Tickets. Tiene estudios de Tecnólogo en Informática por la Facultad de Ingeniería de UDELAR – Centro Universitario de la Región Este. Conoce más sobre él desde su perfil de LinkedIn o visitando su web.

    Recibe en tu correo electrónico toda la información sobre hosting, desarrollo web y dominios

    Términos y Condiciones de Servicio

    Infranetworking Internacional - Copyright 2002-2024
    Todos los derechos reservados.