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:
- Gestión de Múltiples Versiones: Instala y utiliza cualquier versión de Node.js que necesites, desde las más antiguas hasta las más recientes.
- Aislamiento de Proyectos: Asegura que cada proyecto utilice la versión de Node.js para la que fue desarrollado, evitando conflictos de compatibilidad.
- Fácil Cambio de Versión: Cambia entre versiones de Node.js con un solo comando, sin necesidad de reinstalaciones complejas.
- Pruebas Simplificadas: Prueba tu código en diferentes versiones de Node.js para garantizar la compatibilidad y el rendimiento.
- Evita Problemas de Permisos Globales: NVM instala Node.js y sus paquetes en el directorio del usuario, eliminando la necesidad de sudo para instalaciones globales de paquetes npm.
- Actualizaciones Sencillas: Mantente al día con las últimas versiones de Node.js y actualiza fácilmente cuando sea necesario.
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.
-
Abre tu terminal.
-
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.
-
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
-
Cierra y vuelve a abrir tu terminal o ejecuta source ~/.bashrc (o el archivo de perfil correspondiente) para aplicar los cambios.
-
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.
- Descarga el instalador: Ve a la página de lanzamientos de nvm-windows y descarga el último archivo nvm-setup.zip.
- Extrae y ejecuta el instalador: Extrae el contenido del archivo zip y ejecuta nvm-setup.exe. Sigue las instrucciones del asistente de instalación.
- 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:
-
nvm install <version>: Instala una versión específica de Node.js. Puedes usar números de versión (ej. 18.17.0), alias (lts/hydrogen, node para la última), o simplemente lts para la última versión LTS.
nvm install 18.17.0 nvm install lts/gallium nvm install node # Instala la última versión disponible
-
nvm use <version>: Cambia a una versión de Node.js instalada previamente para la sesión actual de la terminal.
nvm use 18.17.0
-
nvm ls: Lista todas las versiones de Node.js instaladas en tu sistema. La versión actualmente en uso se indicará con una flecha (->).
nvm ls
-
nvm alias default <version>: Establece una versión de Node.js por defecto que se usará cada vez que abras una nueva terminal.
nvm alias default 18.17.0
-
nvm current: Muestra la versión de Node.js actualmente activa.
nvm current
-
nvm uninstall <version>: Desinstala una versión específica de Node.js.
nvm uninstall 16.0.0
-
nvm exec <version> <command>: Ejecuta un comando con una versión específica de Node.js sin cambiar la versión global o de la sesión actual.
nvm exec 14.20.0 node my-script.js
-
nvm run <version> [args] : Similar a nvm exec, pero más orientado a ejecutar scripts.
nvm run 18.17.0 my-app.js
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:
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.
- Asegúrate de que las líneas de exportación y source de NVM estén en tu archivo de perfil (.bashrc, .zshrc, etc.).
- Cierra y vuelve a abrir tu terminal, o ejecuta source ~/.bashrc (o el archivo apropiado).
- 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
- n: Es otra herramienta popular, especialmente para aquellos que prefieren una sintaxis más simple. n instala Node.js globalmente (usualmente en /usr/local), lo que puede requerir sudo.
- NVM: Instala Node.js en el directorio del usuario (~/.nvm), evitando la necesidad de sudo para la mayoría de las operaciones. NVM es a menudo considerado más robusto para aislar entornos. El manejo de .nvmrc es una ventaja clave de NVM.
NVM vs. Volta
- Volta: Es una herramienta más nueva que gestiona no solo versiones de Node.js sino también de otras herramientas de JavaScript como Yarn o TypeScript. Volta fija automáticamente la versión de Node.js del proyecto basándose en el package.json (si se especifica el campo volta). Es rápido y promete "instalar una vez, configurar nunca más".
- NVM: Requiere un manejo más manual con nvm use o .nvmrc. Volta es quizás más "manos libres" una vez configurado.
NVM vs. Docker
- Docker: Proporciona un aislamiento completo del entorno empaquetando la aplicación con todas sus dependencias, incluido Node.js. Es excelente para producción y para asegurar consistencia entre desarrollo, staging y producción.
- NVM: Se enfoca solo en la gestión de versiones de Node.js en el entorno de desarrollo local. Docker puede ser excesivo para la simple gestión de versiones de Node.js durante el desarrollo.
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:
- Instala NVM en tu sistema de desarrollo.
- Utiliza archivos .nvmrc en la raíz de cada uno de tus proyectos para especificar la versión de Node.js requerida.
- 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.
- 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.
- 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.
- Evita usar sudo con NVM y los comandos de npm/Node.js gestionados por él.
- 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!