Cambiando Entre Proyectos
Uno de los beneficios clave de Volta es su manejo fluido de diferentes versiones de herramientas a través de proyectos. Esta página explica cómo Volta gestiona automáticamente tu entorno JavaScript mientras te mueves entre proyectos.
Cambio Automático de Versiones
A diferencia de otros gestores de versiones que requieren que cambies manualmente entre versiones de herramientas, Volta maneja esto automáticamente basado en tu directorio actual.
Cómo Funciona
- Cuando ejecutas un comando JavaScript (como
node
,npm
, o un binario de paquete), el shim de Volta intercepta el comando - Volta verifica tu directorio actual para ver si estás en un proyecto con versiones de herramientas fijadas
- Si lo estás, Volta usa las versiones fijadas del
package.json
de ese proyecto - Si no estás en un proyecto con versiones fijadas, Volta usa tus herramientas por defecto
Todo esto sucede transparentemente sin ningún comando adicional.
Flujo de Trabajo de Ejemplo
Imagina que tienes dos proyectos con diferentes requisitos de Node.js:
Proyecto A (~/projects/project-a/package.json
):
{
"volta": {
"node": "14.19.1",
"npm": "6.14.16"
}
}
Proyecto B (~/projects/project-b/package.json
):
{
"volta": {
"node": "16.14.2",
"npm": "8.5.0"
}
}
Tu flujo de trabajo podría verse así:
# En Proyecto A
cd ~/projects/project-a
node --version # Muestra v14.19.1
npm --version # Muestra v6.14.16
# Cambiar a Proyecto B
cd ~/projects/project-b
node --version # Automáticamente muestra v16.14.2
npm --version # Automáticamente muestra v8.5.0
# Fuera de cualquier proyecto
cd ~
node --version # Muestra tu versión por defecto de Node
Proyectos Anidados
Si tienes proyectos anidados, Volta usará las versiones de herramientas del package.json
más cercano con una sección volta
.
Por ejemplo:
/parent-project/package.json (tiene sección volta con node@14)
/parent-project/child-project/package.json (tiene sección volta con node@16)
/parent-project/other-directory/ (sin package.json)
Si ejecutas comandos en:
/parent-project/child-project/
- Volta usa Node.js 16/parent-project/other-directory/
- Volta usa Node.js 14/parent-project/
- Volta usa Node.js 14
Binarios de Paquetes
El cambio automático de Volta también se aplica a binarios de paquetes. Por ejemplo, si tienes una versión específica del proyecto de TypeScript y ejecutas tsc
, Volta asegura que se use la versión correcta.
Paquetes Globales vs. Locales
Cuando ejecutas un binario de paquete:
- Si el binario existe en el
node_modules/.bin/
de tu proyecto, Volta usa esa versión - Si no, pero el paquete está instalado globalmente vía Volta, usa esa versión
- De lo contrario, muestra un error de que el comando no fue encontrado
Solución de Problemas
Si estás experimentando problemas con el cambio de versiones:
- Verifica que tu proyecto tenga una sección
volta
en supackage.json
- Ejecuta
volta list all
para verificar tus herramientas instaladas - Verifica que las herramientas que necesitas estén fijadas a tu proyecto o instaladas como versiones por defecto
- Ejecuta
volta which node
para ver qué versión de Node.js está usando Volta y por qué