nvm: versiones de Node y estado del shell
Arquitectura de nvm: versiones instaladas, estado de shell y ejecución hija
Traza almacenamiento, selectores, cambios de PATH y el proceso de una orden exec explícita sin confundir sus responsabilidades.
Qué aprenderás
- Almacenar y seleccionar son capas diferentes
- La rama use modifica la shell que la llama
- Una orden hija explícita tiene su propio ciclo
Antes de empezar
- Comandos de shell y entorno de procesos
- Distinguir instalación y selección del runtime
Diagnostica la versión solicitada frente a la activa y define límites explícitos de instalación y verificación.
Conclusiones clave
- Versión almacenada, selector y proceso activo son estados diferentes.
- Una función puede modificar el entorno que inicia al próximo proceso.
- Helpers correctos no validan todo el ciclo de instalación y ejecución.
Almacenar y seleccionar son capas diferentes
nvm mantiene directorios de versiones, alias y caché bajo el destino elegido. Selectores como versión exacta, default o current deben interpretarse antes de decidir qué ejecutar. El parser de .nvmrc devuelve texto; resolverlo a un runtime conocido e instalado es una responsabilidad posterior, no el mismo paso.
Así se explica que una solicitud analizada aún falle al seleccionar. También explica por qué cambiar el alias predeterminado no modifica inmediatamente todas las shells abiertas. Inspecciona versiones almacenadas, selector utilizado y proceso activo por separado, en lugar de reducirlos a una única variable global de versión.
La rama use modifica la shell que la llama
Tras comprobar la versión, use calcula su directorio y llama a nvm_change_path. Exporta PATH, actualiza información de manuales, reinicia la caché de comandos y establece NVM_BIN y NVM_INC. De ahí que nvm se cargue como función: un ejecutable hijo ordinario no puede reescribir directamente el entorno de su shell padre.
La opción NVM_SYMLINK_CURRENT añade un efecto en disco al reemplazar un enlace current. No es necesaria para explicar la selección normal por shell y no debería activarse silenciosamente en una guía. El experimento entregó cadenas literales a los helpers, sin entrar en la rama use que modifica el entorno completo.
Una orden hija explícita tiene su propio ciclo
El pequeño nvm-exec carga el gestor sin selección automática, elige versión y se reemplaza por la orden solicitada mediante exec. Una versión explícita resulta más fácil de razonar que una selección omitida dependiente del estado actual. Arrancar un proceso sigue siendo distinto de instalar una distribución o editar un perfil.
La prueba cubre helpers extraídos de texto, no todos sus llamadores, shells ni ciclos de procesos. Expone límites útiles: transformación de PATH y análisis de .nvmrc pueden observarse aparte de descargas, almacenamiento y aplicación. Las pruebas de integración deben volver a conectarlos antes de declarar correcta una instalación real.
Pasos de implementación
- 1
Identifica el origen del selector.
- 2
Sigue su resolución al directorio instalado.
- 3
Traza los cambios de entorno de use.
- 4
Verifica aparte la orden iniciada bajo ese entorno.
Ejemplo para copiar
selector / .nvmrc -> resolución -> directorio instalado
|
shell llamadora <- PATH + NVM_BIN + NVM_INC <- use
|
+-> nuevo proceso Node
procesos existentes: sin cambiosPreguntas frecuentes
¿Por qué se carga nvm en vez de ejecutarlo normalmente?
Define funciones capaces de cambiar la shell llamadora. Un ejecutable hijo normal no cambia directamente el PATH del padre.
¿La prueba ejecutó nvm use?
No. Ejecutó funciones seleccionadas con entradas literales, no la rama completa que exporta variables y puede actualizar estado.