Introduccion a Node Version Manager
Node Version Manager permite instalar y alternar entre multiples versiones de Node.js en el mismo sistema. Esta capacidad resulta esencial cuando se mantienen varios proyectos que requieren versiones distintas del runtime. NVM evita conflictos entre dependencias y facilita las pruebas de compatibilidad sin necesidad de desinstalar y reinstalar Node.js de forma manual.
En sistemas Unix y macOS se utiliza el proyecto nvm-sh. En Windows nativo se emplea nvm-windows, un proyecto independiente que ofrece una experiencia similar. Ambos permiten instalar versiones LTS y Current, establecer una version por defecto y definir la version requerida por cada proyecto mediante un archivo .nvmrc.
El uso de NVM mantiene el entorno de desarrollo ordenado y reproducible. Cada version de Node.js dispone de su propio conjunto de paquetes globales, lo que evita interferencias entre proyectos.
Instalacion de NVM en distintos sistemas operativos
En Linux y macOS la instalacion se realiza mediante el script oficial. Es necesario disponer de curl o wget y de Git.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
Despues de ejecutar el script se cierra y se vuelve a abrir la terminal, o se carga el perfil correspondiente.
source ~/.bashrc
En zsh se utiliza source ~/.zshrc. La verificacion se realiza con command -v nvm, que debe devolver nvm si la instalacion fue correcta.
En Windows se descarga el instalador desde el repositorio nvm-windows. Se ejecuta el archivo .exe y se siguen las instrucciones. Al finalizar, se abre una nueva ventana de terminal y se comprueba con nvm version.
Una vez instalado NVM, se instala la version LTS de Node.js, que constituye la eleccion recomendada para la mayoria de los proyectos.
nvm install --lts
nvm use --lts
Uso avanzado de NVM para la gestion de versiones
El comando nvm ls-remote muestra las versiones disponibles en el repositorio oficial. nvm ls lista las versiones instaladas localmente. Para instalar una version especifica se indica el numero de version o el alias correspondiente.
nvm install 22
nvm install --lts
nvm install node
El alias node corresponde a la version Current mas reciente. El alias –lts selecciona la version de soporte a largo plazo activa. Para activar una version instalada en la sesion actual se utiliza nvm use.
nvm use 22
nvm use --lts
La version activa se establece como predeterminada para nuevas terminales con nvm alias default.
nvm alias default lts/*
Para eliminar una version que ya no se necesita se utiliza nvm uninstall. Esta accion tambien elimina los paquetes globales instalados en esa version.
nvm uninstall 18
El archivo .nvmrc permite especificar la version requerida por un proyecto. Se crea en la raiz del repositorio con el numero de version o con un alias.
echo "lts/*" > .nvmrc
Al entrar en el directorio, nvm use sin argumentos lee el archivo y activa la version indicada. Si la version no esta instalada, nvm install la descarga antes de activarla.
Beneficios de utilizar NVM en el desarrollo profesional
NVM proporciona flexibilidad para alternar entre versiones sin reiniciar el sistema ni modificar instalaciones globales. El aislamiento de entornos evita que un proyecto actualice dependencias de forma que afecte a otro. La facilidad para probar aplicaciones en distintas versiones acelera la deteccion de incompatibilidades.
La herramienta se integra en flujos de trabajo automatizados. En scripts de construccion o en pipelines de integracion continua se puede cargar NVM y seleccionar la version requerida antes de ejecutar npm install o npm run build. Esta practica garantiza consistencia entre el entorno local y el de CI.
Los paquetes globales se instalan por version. Al cambiar de version es necesario reinstalar o migrar aquellos que se utilizan de forma habitual, como herramientas de linea de comandos. Esta separacion es una caracteristica deliberada que mantiene la independencia de cada runtime.
Integracion de NVM en flujos de trabajo y automatizacion
Un script basico que carga NVM y selecciona una version antes de construir un proyecto tiene la siguiente forma.
#!/bin/bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm use
npm install
npm run build
En entornos de CI se especifica la version de Node.js en la configuracion del pipeline. Muchas plataformas ofrecen acciones o imagenes que incorporan NVM o equivalentes, de modo que la version declarada en .nvmrc se utiliza de forma automatica.
Mantener NVM actualizado se realiza volviendo a ejecutar el script de instalacion. Las versiones de Node.js instaladas se actualizan con nvm install en la misma linea principal, lo que obtiene el ultimo parche disponible.
Consideraciones finales para un uso eficiente de NVM
Preferir versiones LTS para el desarrollo diario y para produccion reduce el riesgo de incompatibilidades. La version Current puede utilizarse para experimentar con nuevas caracteristicas, pero no es la eleccion recomendada como predeterminada.
Revisar periodicamente las versiones instaladas con nvm ls y eliminar aquellas que ya no se utilizan libera espacio. Documentar la version requerida en el archivo .nvmrc y en el README del proyecto facilita la incorporacion de nuevos colaboradores.
La documentacion oficial de NVM y los foros de la comunidad proporcionan informacion actualizada sobre comandos y opciones. Verificar las versiones activas con node –version y npm –version despues de cada cambio confirma que el entorno esta configurado correctamente.
Conclusiones
Node Version Manager permite gestionar multiples versiones de Node.js de forma eficiente en Linux, macOS y Windows. La instalacion mediante el script oficial o el instalador de Windows es directa, y los comandos nvm install, nvm use y nvm alias default cubren la mayoria de las necesidades diarias. El archivo .nvmrc documenta la version requerida por cada proyecto y automatiza su seleccion.
El aislamiento de paquetes globales y la facilidad de integracion en scripts y pipelines de CI contribuyen a entornos reproducibles. Adoptar NVM como parte de la rutina de desarrollo garantiza compatibilidad entre proyectos y simplifica el mantenimiento del runtime de Node.js.
