Skip to content

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

  1. Cuando ejecutas un comando JavaScript (como node, npm, o un binario de paquete), el shim de Volta intercepta el comando
  2. Volta verifica tu directorio actual para ver si estás en un proyecto con versiones de herramientas fijadas
  3. Si lo estás, Volta usa las versiones fijadas del package.json de ese proyecto
  4. 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):

json
{
  "volta": {
    "node": "14.19.1",
    "npm": "6.14.16"
  }
}

Proyecto B (~/projects/project-b/package.json):

json
{
  "volta": {
    "node": "16.14.2",
    "npm": "8.5.0"
  }
}

Tu flujo de trabajo podría verse así:

bash
# 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:

  1. Si el binario existe en el node_modules/.bin/ de tu proyecto, Volta usa esa versión
  2. Si no, pero el paquete está instalado globalmente vía Volta, usa esa versión
  3. 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 su package.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é