CarlosSeijas
← Volver a los blogs

Domina tu Desarrollo: Guía Completa para Usar Node Version Manager (NVM) Eficazmente

Desarrollo
Domina tu Desarrollo: Guía Completa para Usar Node Version Manager (NVM) Eficazmente

¿Qué es Node Version Manager (NVM)?

Node Version Manager (NVM) es una herramienta de línea de comandos que te permite instalar y gestionar múltiples versiones de Node.js en tu sistema. Esto es crucial para desarrolladores que trabajamos en varios proyectos con diferentes requisitos de versión de Node.js o si simplemente quiren probar las últimas características de Node.js sin afectar sus proyectos existentes.

NVM te libera de la tediosa tarea de desinstalar y reinstalar Node.js manualmente cada vez que necesitas cambiar de versión. Con NVM, puedes cambiar entre versiones con un simple comando.

Entonces puedes llegar a tener por ejemplo un proyecto 1 que usa la versión 18 de Node.js y un proyecto 2 que usa la versión 20 de Node.js todo en tu misma computadora sin que uno afecte al otro.

Ventajas de usar NVM en tus proyectos

Utilizar NVM ofrece múltiples beneficios que agilizan tu flujo de trabajo y mejoran la gestión de tus proyectos:

Instalación de NVM en diferentes sistemas operativos

El proceso de instalación de NVM varía ligeramente según tu sistema operativo.

macOS y Linux

En macOS y Linux, puedes instalar NVM usando un script de instalación a través de curl o wget.

  1. Abre tu terminal.

  2. Ejecuta el script de instalación:

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
    

    O si prefieres wget:

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

    Nota: Asegúrate de verificar la última versión del script de instalación en el repositorio oficial de NVM.

  3. Actualiza la configuración de tu shell: NVM intentará agregar las líneas necesarias a tu archivo de perfil de shell (.bash_profile, .zshrc, .profile, o .bashrc). Si no lo hace automáticamente, o si el comando nvm no está disponible después de cerrar y reabrir la terminal, deberás agregar manualmente las siguientes líneas a tu archivo de configuración de shell:

    export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
    [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
    
  4. Cierra y vuelve a abrir tu terminal o ejecuta source ~/.bashrc (o el archivo de perfil correspondiente) para aplicar los cambios.

  5. Verifica la instalación:

    nvm --version
    

    Deberías ver la versión de NVM instalada.

Windows

Para Windows, NVM tiene un proyecto separado llamado nvm-windows.

  1. Descarga el instalador: Ve a la página de lanzamientos de nvm-windows y descarga el último archivo nvm-setup.zip.
  2. Extrae y ejecuta el instalador: Extrae el contenido del archivo zip y ejecuta nvm-setup.exe. Sigue las instrucciones del asistente de instalación.
  3. Verifica la instalación: Abre una nueva ventana de Command Prompt o PowerShell y ejecuta:
    nvm version
    

Comandos básicos de NVM que mas utilizo

Una vez instalado NVM, estos son los comandos esenciales que utilizo con frecuencia:

Cómo instalar y gestionar versiones de Node.js con NVM

Gestionar versiones de Node.js con NVM es sencillo.

Instalar una versión específica

Para instalar la versión 20.5.0 de Node.js:

nvm install 20.5.0

NVM descargará, compilará (si es necesario) e instalará la versión especificada.

Instalar la última versión LTS

Para desarrollos estables, generalmente se recomienda usar la última versión LTS (Long Term Support).

nvm install --lts

O puedes especificar el nombre del codename LTS:

nvm install lts/hydrogen # Por ejemplo, para Node.js 18.x

Instalar la última versión disponible

Si quieres probar las características más nuevas (potencialmente inestables y no recomendadas para producción claramente):

nvm install node

Ver versiones instaladas

Como se mencionó, nvm ls te muestra todas las versiones que tienes:

-> v18.17.0 v20.5.0 system default -> 18.17.0 node -> stable (-> v20.11.1) (default) stable -> 20.11 (-> v20.11.1) (default) iojs -> N/A (default) lts/* -> lts/iron (-> 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.2 (-> N/A) lts/hydrogen -> v18.19.1 (-> N/A) lts/iron -> v20.11.1 (-> N/A)

La flecha -> indica la versión activa. system se refiere a la versión de Node.js instalada globalmente si existe alguna fuera de NVM.

Cambiar entre versiones de Node.js fácilmente

Una de las mayores ventajas de NVM es la facilidad para cambiar entre versiones.

Cambiar para la sesión actual

Si tienes instaladas las versiones 18.17.0 y 20.5.0, y actualmente estás usando 18.17.0, puedes cambiar a 20.5.0 con:

nvm use 20.5.0

Ahora, si ejecutas node -v, verás v20.5.0. Este cambio solo afecta a la ventana o pestaña actual de tu terminal.

Establecer una versión por defecto (Este comando es muy pero muy util)

Para que una versión específica se cargue automáticamente cada vez que abres una nueva terminal, usa nvm alias default:

nvm alias default 20.5.0

Ahora, cualquier nueva sesión de terminal comenzará con Node.js v20.5.0.

Usar un archivo .nvmrc para proyectos específicos

Para proyectos que requieren una versión específica de Node.js, puedes crear un archivo .nvmrc en la raíz del directorio de tu proyecto. Este archivo simplemente contiene el número de la versión (ej. 18.17.0 o lts/hydrogen).

Crea el archivo:

echo "18.17.0" > .nvmrc

O si prefieres una versión LTS específica:

echo "lts/hydrogen" > .nvmrc

Luego, cuando estés en el directorio del proyecto, puedes ejecutar:

nvm use

NVM leerá automáticamente el archivo .nvmrc y cambiará a la versión especificada. Si la versión no está instalada, NVM te preguntará si quieres instalarla.

También puedes ejecutar nvm install (sin argumentos) en un directorio con un archivo .nvmrc, y NVM instalará la versión especificada si aún no está instalada.

Algunos shells y extensiones de terminal pueden configurarse para llamar automáticamente nvm use cuando entras en un directorio con un archivo .nvmrc.

Solución de problemas comunes al usar NVM

Aunque NVM es bastante robusto, aquí hay algunos problemas comunes y sus soluciones:

nvm: command not found

Esto suele ocurrir si NVM no se cargó correctamente en el script de inicio de tu shell.

  1. Asegúrate de que las líneas de exportación y source de NVM estén en tu archivo de perfil (.bashrc, .zshrc, etc.).
  2. Cierra y vuelve a abrir tu terminal, o ejecuta source ~/.bashrc (o el archivo apropiado).
  3. En macOS, si usas zsh (el shell por defecto en versiones recientes), asegúrate de que la configuración esté en .zshrc y no en .bash_profile.

La versión de Node.js no cambia globalmente

nvm use <version> solo afecta a la sesión actual de la terminal. Para un cambio persistente en nuevas terminales, usa nvm alias default <version>.

Problemas de instalación de paquetes globales

Si instalas un paquete global con npm install -g <package-name> mientras usas una versión de Node.js gestionada por NVM, ese paquete solo estará disponible para esa versión específica de Node.js. Si cambias a otra versión de Node.js con nvm use, tendrás que reinstalar los paquetes globales para esa otra versión.

NVM tiene un comando para reinstalar paquetes de una versión a otra:

nvm install v20.5.0 --reinstall-packages-from=v18.17.0

Esto instalará v20.5.0 y luego reinstalará todos los paquetes globales que tenías en v18.17.0.

Permisos (EACCES) al instalar paquetes globalmente

NVM está diseñado para evitar esto, ya que instala Node y los paquetes en tu directorio de usuario. Si encuentras errores de EACCES, verifica que no estés intentando usar sudo con comandos de NVM o npm gestionados por NVM. La configuración de NVM podría estar corrupta o haber un conflicto con una instalación global de Node.js preexistente.

Incompatibilidad con sudo

No debes usar sudo con los comandos de nvm, node, o npm cuando Node.js es gestionado por NVM. Hacerlo puede llevar a problemas de permisos o instalar paquetes en ubicaciones incorrectas. NVM gestiona las instalaciones en el directorio del usuario, por lo que sudo no es necesario.

Comparativa entre NVM y otras herramientas de gestión de versiones

Existen otras herramientas para gestionar versiones de Node.js. Aquí una breve comparativa:

NVM vs. n

NVM vs. Volta

NVM vs. Docker

NVM sigue siendo una opción muy popular y sólida, especialmente por su simplicidad para empezar y su amplio uso en la comunidad.

Conclusión y mejores prácticas para usar NVM

Node Version Manager es una herramienta indispensable para cualquier desarrollador de Node.js. Simplifica la gestión de múltiples versiones, asegura la consistencia entre proyectos y facilita las pruebas en diferentes entornos de Node.js.

Mejores Prácticas:

  1. Instala NVM en tu sistema de desarrollo.
  2. Utiliza archivos .nvmrc en la raíz de cada uno de tus proyectos para especificar la versión de Node.js requerida.
  3. Establece una versión LTS por defecto con nvm alias default lts/* para proyectos generales o cuando no estés en un directorio de proyecto específico.
  4. Actualiza NVM regularmente: Nuevas versiones de NVM pueden incluir soporte para nuevas versiones de Node.js o correcciones de errores. Puedes actualizar NVM reinstalándolo con el mismo script de instalación.
  5. Limpia versiones antiguas no utilizadas: De vez en cuando, revisa las versiones instaladas con nvm ls y desinstala las que ya no necesites con nvm uninstall <version> para liberar espacio.
  6. Evita usar sudo con NVM y los comandos de npm/Node.js gestionados por él.
  7. Aprovecha nvm ls-remote para descubrir nuevas versiones o nombres de LTS.

Al dominar NVM, tomarás control total sobre tus entornos de Node.js, lo que te permitirá desarrollar de manera más eficiente, colaborar mejor y reducir los dolores de cabeza relacionados con la compatibilidad de versiones. Happy coding!

Comentarios