Guía Completa de NVM: Domina Node Version Manager

Mi salvavidas para manejar Node.js
¿Te has encontrado alguna vez en esa situación horrible donde tienes un proyecto que funciona con Node 16, otro que necesita Node 18, y acabas de empezar uno nuevo que requiere Node 20? Yo sí, y fue un infierno hasta que descubrí NVM.
Node Version Manager (NVM) es básicamente tu mejor amigo si trabajas con Node.js. Te permite tener múltiples versiones de Node instaladas en tu máquina y cambiar entre ellas con un simple comando. Ya no más desinstalar y reinstalar Node cada vez que necesitas trabajar en un proyecto diferente.
En mi experiencia, NVM me ha salvado la vida incontables veces. Puedes tener un proyecto legacy corriendo con Node 14 y al mismo tiempo estar experimentando con las últimas features de Node 21. Todo en la misma computadora, sin que uno afecte al otro.
Por qué NVM cambió mi forma de trabajar
Después de años usando NVM, puedo decirte que estos beneficios son reales:
- Adiós a los conflictos: Cada proyecto usa exactamente la versión de Node para la que fue desarrollado
- Cambios súper fáciles: Un comando y listo, estás en otra versión
- Pruebas sin estrés: Puedes probar tu código en diferentes versiones sin romper nada
- Nada de sudo: NVM instala todo en tu directorio de usuario, así que no necesitas permisos de admin
- Actualizaciones cómodas: Puedes probar las últimas versiones sin miedo
Lo importante es que NVM te da esa tranquilidad de saber que cada proyecto va a funcionar como debe, sin sorpresas desagradables.
Instalando NVM: paso a paso
macOS y Linux (la forma fácil)
En Mac y Linux, la instalación es súper directa:
-
Abre tu terminal
-
Ejecuta el script mágico:
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
Ojo: siempre verifica que tengas la última versión en el repo oficial de NVM.
-
Configura tu shell: NVM va a intentar agregar las líneas necesarias a tu archivo de configuración de shell. Si no lo hace automáticamente, o si el comando nvm no funciona después de reiniciar la terminal, agrega estas líneas manualmente a tu archivo de configuración (.bash_profile, .zshrc, etc.):
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
-
Reinicia tu terminal o ejecuta source ~/.bashrc para que los cambios tengan efecto
-
Verifica que funcione:
nvm --version
Si ves un número de versión, ¡felicidades! Ya tienes NVM funcionando.
Windows (un poquito diferente)
En Windows, NVM es un proyecto separado llamado nvm-windows:
- Descarga el instalador: Ve a los releases de nvm-windows y baja el último nvm-setup.zip
- Instálalo: Descomprime y ejecuta nvm-setup.exe. Sigue el wizard como cualquier programa
- Pruébalo: Abre una nueva ventana de Command Prompt o PowerShell y ejecuta:
nvm version
Comandos que uso todos los días
Estos son los comandos que realmente importan en el día a día:
-
nvm install <version>: Instala la versión que necesites. Puedes usar números específicos, aliases, o lts para la última versión estable:
nvm install 18.17.0 nvm install lts/gallium nvm install node # La última versión disponible
-
nvm use <version>: Cambia a una versión instalada (solo para la terminal actual):
nvm use 18.17.0
-
nvm ls: Ve todas las versiones que tienes instaladas. La que está activa aparece con una flecha:
nvm ls
-
nvm alias default <version>: Súper importante - esta será tu versión por defecto cuando abras nuevas terminales:
nvm alias default 18.17.0
-
nvm current: Te dice qué versión estás usando ahora:
nvm current
-
nvm uninstall <version>: Limpia versiones que ya no necesitas:
nvm uninstall 16.0.0
-
nvm exec <version> <command>: Ejecuta algo con una versión específica sin cambiar tu versión actual:
nvm exec 14.20.0 node my-script.js
Gestionando versiones como un pro
Instalando lo que necesitas
Para instalar una versión específica (digamos, la 20.5.0):
nvm install 20.5.0
Para la última versión LTS (mi recomendación para proyectos serios):
nvm install --lts
O por nombre de código:
nvm install lts/hydrogen # Node.js 18.x
Para la versión más nueva (experimental, úsala con cuidado):
nvm install node
Viendo qué tienes instalado
nvm ls te muestra todo lo que tienes:
La flecha -> te dice cuál está activa. system es la versión global si tenías Node instalado antes de NVM.
Cambiar versiones sin drama
Para la sesión actual
Si tienes instaladas varias versiones y quieres cambiar temporalmente:
nvm use 20.5.0
Esto solo afecta la terminal donde lo ejecutaste.
Para siempre (mi comando favorito)
Para que una versión específica se cargue en todas las nuevas terminales:
nvm alias default 20.5.0
Este comando me ha ahorrado tanto tiempo que ya perdí la cuenta.
Usando .nvmrc para proyectos específicos
Aquí viene uno de mis trucos favoritos. En cada proyecto, creo un archivo .nvmrc con la versión que necesito:
echo "18.17.0" > .nvmrc
O para una versión LTS:
echo "lts/hydrogen" > .nvmrc
Ahora, cada vez que entro al proyecto, solo ejecuto:
nvm use
NVM lee el archivo automáticamente y cambia a la versión correcta. Si no la tengo instalada, me pregunta si la quiero instalar. Súper conveniente.
También puedes hacer nvm install (sin argumentos) y va a instalar lo que diga el .nvmrc.
Cuando las cosas se rompen (y cómo arreglarlas)
"nvm: command not found"
Este es el clásico. Generalmente significa que NVM no se cargó bien:
- Revisa que las líneas de configuración estén en tu archivo de shell (.bashrc, .zshrc, etc.)
- Cierra y abre la terminal, o ejecuta source ~/.bashrc
- En Mac con zsh, asegúrate de que esté en .zshrc y no en .bash_profile
La versión no cambia entre terminales
Recuerda: nvm use solo afecta la terminal actual. Para un cambio persistente, usa nvm alias default.
Problemas con paquetes globales
Esto me costó entender al principio: cuando instalas un paquete global (npm install -g), solo está disponible para esa versión específica de Node. Si cambias de versión, tienes que reinstalarlo.
El truco es usar este comando cuando instalas una nueva versión:
nvm install v20.5.0 --reinstall-packages-from=v18.17.0
Esto copia todos tus paquetes globales de la versión antigua a la nueva.
Errores de permisos
Si ves errores de EACCES, NO uses sudo con NVM. NVM está diseñado para trabajar sin permisos de admin. Si tienes estos errores, probablemente hay un conflicto con una instalación previa de Node.
NVM vs otras herramientas
NVM vs. n
- n: Más simple pero requiere sudo porque instala globalmente
- NVM: Más robusto, instala en tu directorio de usuario, mejor aislamiento
NVM vs. Volta
- Volta: Más nuevo, gestiona no solo Node sino también Yarn y TypeScript. Cambia versiones automáticamente basándose en tu package.json
- NVM: Requiere más manejo manual pero te da control total
NVM vs. Docker
- Docker: Aislamiento completo para producción
- NVM: Perfecto para desarrollo local, mucho más ligero
En mi experiencia, NVM sigue siendo mi favorito para desarrollo local por su simplicidad y confiabilidad.
Mi reflexión después de años usándolo
NVM es una de esas herramientas que una vez que la adoptas, no puedes vivir sin ella. Me ha salvado de innumerables problemas de compatibilidad y hace que trabajar con múltiples proyectos sea mucho más relajado.
Mis consejos basados en experiencia real:
- Instala NVM ya: No esperes más, lo vas a necesitar
- Usa .nvmrc siempre: Es un salvavidas para proyectos en equipo
- Define una versión LTS por defecto: nvm alias default lts/* te va a ahorrar dolores de cabeza
- Actualiza NVM regularmente: Siempre salen nuevas versiones de Node
- Limpia versiones viejas: nvm ls y nvm uninstall son tus amigos para mantener todo ordenado
- Nunca uses sudo: En serio, NVM no lo necesita
- Explora con nvm ls-remote: Te muestra todas las versiones disponibles
Lo importante es que NVM te da control total sobre tus entornos de Node.js. Una vez que lo domines, desarrollar se vuelve mucho más fluido y tendrás menos problemas raros relacionados con versiones.
¿Ya lo probaste? Si no, este es el momento perfecto para empezar. Tu futuro yo te lo va a agradecer.