Este tutorial está diseñado para guiar a quienes desean aprender más acerca de nvm. Es ideal para un nivel medio.
nvm (Node Version Manager) es una herramienta esencial para desarrolladores que trabajan con Node.js, permitiendo instalar y gestionar múltiples versiones de Node.js en una misma máquina. Esta guía de nivel intermedio cubre el uso de nvm para cambiar fácilmente entre versiones según los requisitos del proyecto, gestionar dependencias globales por versión de Node.js, y utilizar archivos `.nvmrc` para automatizar la selección de versión en diferentes directorios de proyecto, mejorando la organización y compatibilidad del entorno de desarrollo.
El 'Hola mundo' en nvm es instalar una versión específica de Node.js y verificar que se está utilizando correctamente en la terminal.
nvm install 18.17.0 && nvm use 18.17.0 && node -v
Resultado:
Now using node v18.17.0 (npm v9.6.7)
v18.17.0
Familiarizarse con estos comandos es esencial para interactuar eficientemente con nvm:
nvm install 18.17.0
nvm install --lts
nvm install node
nvm use 18
nvm list
nvm alias default 18
nvm uninstall 16
nvm use
nvm exec 14 node script.js
nvm run 12 start
nvm cache clear
Comprender estos conceptos fundamentales te ayudará a dominar nvm de forma más organizada y eficiente:
¿Por qué gestionar versiones de Node.js?:
Los proyectos pueden requerir versiones específicas de Node.js por compatibilidad con dependencias, características del lenguaje o del propio Node.js. Gestionar múltiples versiones es crucial al trabajar en varios proyectos simultáneamente o al actualizar el entorno de desarrollo.
Cómo funciona nvm (Path Manipulation):
nvm no instala Node.js a nivel global del sistema operativo. En cambio, instala diferentes versiones en un directorio gestionado por nvm y modifica la variable de entorno `PATH` en tu shell para que apunte a la versión de Node.js deseada en la sesión actual de la terminal. Esto permite el cambio rápido sin conflictos.
Archivos `.nvmrc`:
Un archivo de texto simple llamado `.nvmrc` en la raíz de un proyecto puede contener la versión de Node.js requerida para ese proyecto. Herramientas y la propia `nvm use` pueden leer este archivo para garantizar que el desarrollador use la versión correcta automáticamente.
Dependencias Globales por Versión de Node.js:
Los paquetes instalados globalmente usando `npm install -g` o `yarn global add` están vinculados a la versión de Node.js que estaba activa cuando se instalaron. Con nvm, puedes tener diferentes conjuntos de herramientas globales (como CLIs de frameworks) para cada versión de Node.js que gestiones.
LTS vs Current Versions:
Node.js sigue un ciclo de lanzamientos. Las versiones LTS (Long Term Support) son mantenidas activamente por un período más largo y son más estables, siendo las recomendadas para producción. Las versiones 'Current' son lanzamientos más frecuentes con las últimas características, ideales para experimentar o para proyectos que necesitan lo más nuevo.
Configuración del Shell (source):
Para que nvm funcione, sus scripts de inicialización deben ser ejecutados por tu shell al inicio (generalmente agregando líneas a `.bashrc`, `.zshrc`, etc.). Esto permite que nvm intercepte los comandos `node`, `npm`, `npx`, etc.
Algunos ejemplos de aplicaciones prácticas donde se utiliza nvm:
Trabajar en múltiples proyectos con requisitos de versión de Node.js diferentes:
Cambiar rápida y fácilmente entre las versiones de Node.js necesarias para cada proyecto sin conflictos entre ellos, simplemente navegando a los directorios de proyecto con `.nvmrc`.
Probar la compatibilidad de una aplicación con distintas versiones de Node.js:
Verificar si tu base de código o una biblioteca funciona correctamente en versiones de Node.js más antiguas o más recientes antes de una actualización o despliegue.
Gestionar diferentes versiones de herramientas CLI globales:
Tener instaladas globalmente múltiples versiones de herramientas como Angular CLI, Vue CLI, create-react-app u otras, cada una asociada a una versión específica de Node.js con la que son compatibles.
Asegurar un entorno de desarrollo consistente en un equipo:
Utilizar archivos `.nvmrc` en el repositorio del proyecto para indicar la versión de Node.js requerida, facilitando que todos los miembros del equipo usen la misma versión.
Experimentar con nuevas versiones de Node.js sin afectar tu entorno principal:
Instalar las últimas versiones 'Current' para probar nuevas características sin desconfigurar tu entorno de desarrollo principal basado en una versión LTS.
Aquí tienes algunas recomendaciones para facilitar tus inicios en nvm:
Usa `.nvmrc` en todos tus Proyectos:
Crear un archivo `.nvmrc` en la raíz de tu proyecto y especificar la versión de Node.js (ej: `lts/hydrogen` o `18.17.0`) es la mejor práctica. Te permitirá usar `nvm use` sin argumentos en ese directorio para cambiar a la versión correcta.
Instala las Versiones LTS que Necesites:
Para la mayoría de los proyectos, especialmente los de producción, usa las versiones LTS (`nvm install --lts`). Puedes tener varias versiones LTS instaladas si trabajas con proyectos heredados (`nvm install lts/carbon`, `nvm install lts/dubnium`, etc.).
Recuerda que los Paquetes Globales son por Versión de Node.js:
Si cambias de versión de Node.js con nvm, los paquetes que instalaste globalmente bajo la versión anterior no estarán disponibles automáticamente. Puedes reinstalarlos o usar `nvm copy-alias` o `nvm install <version> --reinstall-packages-from <other_version>`.
Asegúrate de que nvm esté configurado en tu Shell:
Verifica que las líneas de inicialización de nvm estén presentes y se ejecuten en el archivo de configuración de tu shell (`.bashrc`, `.zshrc`, etc.). Cierra y vuelve a abrir la terminal si modificas este archivo.
Mantén nvm Actualizado Periódicamente:
Aunque no es diario, es buena práctica actualizar nvm ocasionalmente para asegurar que soporta las últimas versiones de Node.js y tiene correcciones de errores. El método de actualización generalmente implica volver a descargar y ejecutar el script de instalación.
Usa `nvm run` o `nvm exec` para Scripts Específicos:
Si necesitas ejecutar un script o comando con una versión de Node.js diferente a la activa globalmente, usa `nvm run <version> <script>` o `nvm exec <version> <comando>`. Es útil para tareas puntuales o scripts de CI/CD.
Si te interesa nvm, también podrías explorar estas herramientas:
Amplía tus conocimientos con estos enlaces y materiales: