nvm: versiones de Node y estado del shell
Código de nvm: orden de PATH y un parser que no resuelve versiones
Reproduce reglas fijadas de reemplazo y validación de .nvmrc con 16 casos aislados, sin deducir comportamiento solamente del nombre del comando.
Qué aprenderás
- El reemplazo de PATH depende de condiciones
- Analizar .nvmrc no demuestra disponibilidad
- Mantén el experimento más limitado que el producto
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
- Cambiar rutas puede conservar prefijos y duplicados antiguos.
- Eliminar entradas gestionadas no equivale a reemplazar una.
- Un texto devuelto no prueba una versión reconocida o instalada.
El reemplazo de PATH depende de condiciones
nvm_change_path devuelve el nuevo directorio si no hay entrada y lo antepone si no reconoce rutas gestionadas. Si un directorio binario de sistema reconocido precede a una ruta nvm anterior, también antepone y conserva la antigua. En otro caso sed reemplaza en su posición, respetando directorios personalizados anteriores. No es deduplicación universal.
Los fixtures conservaron /tools/bin delante del reemplazo, observaron que /usr/bin anterior provocaba anteponer y conservar, y que solo se reemplazaba el primer duplicado moderno. nvm_strip_path hace otro trabajo: elimina entradas gestionadas mediante awk y conserva los dos puntos finales. No generalices estos resultados a toda escritura posible de rutas.
Analizar .nvmrc no demuestra disponibilidad
nvm_process_nvmrc_content elimina comentarios y espacios, rechaza contenido efectivo vacío y varias líneas independientes. Acepta pares de claves distintas junto a una solicitud independiente, rechaza la clave node y claves ordinarias duplicadas y sigue exigiendo esa línea independiente. El README reserva los pares para el futuro, no para configurar aplicaciones actualmente.
El helper aceptó not-a-node-version como línea independiente en el experimento. Significa que devolvió texto, no que nvm pueda instalar o ejecutar esa versión. Comprobar disponibilidad y selectores reconocidos corresponde a etapas posteriores. Separar sintaxis, resolución e instalación evita convertir un parseo aparentemente correcto en una falsa confirmación de entorno listo.
Mantén el experimento más limitado que el producto
El harness verifica el Git blob completo, extrae cinco funciones inspeccionadas sin modificarlas y las ejecuta en nuevos procesos Bash. Solo sustituye adaptadores de diagnóstico inocuos; no prueba colores originales. Pasaron 16 casos sin cargar todo el gestor, instalar Node, cambiar PATH del padre o editar perfiles.
Un intento inicial pasó contenido multilínea como argumentos Windows y perdió la forma prevista de entrada. La versión corregida utiliza entrada estándar. Fue un problema de transporte del test, no un defecto del parser original. Registra entradas, salidas y alcance exactos para probar implementación, no una propiedad accidental del lanzador.
Pasos de implementación
- 1
Verifica el hash antes de extraer helpers.
- 2
Prueba rutas vacías, prefijos personalizados, sistema y duplicados.
- 3
Envía por entrada estándar contenido válido y conflictivo de .nvmrc.
- 4
Separa resultados del parser de resolución e instalación.
Ejemplo para copiar
{
"casosObservados": 16,
"prefijoPersonalizado": "conservado",
"sistemaAntesDelAnterior": "anteponer nuevo; conservar anterior",
"rutaModernaDuplicada": "solo primer reemplazo",
"textoDeVersiónDesconocida": "el parser devuelve texto",
"disponibilidadVerificada": false,
"gestorCompletoCargado": false
}Preguntas frecuentes
¿Aceptar texto desconocido demuestra un fallo de instalación?
No se deduce eso. El parser devuelve una solicitud; resolución e instalación tienen otras responsabilidades.
¿Se ejecutaron todos los tests originales?
No. Se probaron cinco funciones extraídas con adaptadores de diagnóstico en 16 casos, no toda la suite original.
Fuentes
- nvm.shFuente verificada 2026-09-08
- test/fast/Unit tests/nvm_change_pathFuente verificada 2026-09-08
- test/fast/Unit tests/nvm_strip_pathFuente verificada 2026-09-08
- README.mdFuente verificada 2026-09-08