Skip to content

Espacios de trabajo

Detalles sobre cómo usar Volta dentro de un entorno de espacio de trabajo, donde hay múltiples proyectos en un solo repositorio y todos quieren compartir configuraciones de Volta.

TIP

Esta característica fue añadida en Volta 0.8.2, no funcionará en versiones anteriores.

Extendiendo la Configuración

Dentro de la sección "volta" en package.json, puedes especificar una entrada con clave "extends". El valor de esa entrada debería ser una ruta a otro archivo JSON que también tenga una sección "volta". Las rutas relativas serán resueltas relativas al archivo en el que están establecidas. Cualquier configuración de Volta (ej. versiones de "node" o "yarn") será fusionada con aquellas del archivo apuntado por "extends", con precedencia dada al archivo actual. Así que si quieres tener una sola versión de Node para todos tus proyectos, establecerías esas versiones en la raíz, y luego cada proyecto necesitaría solo "extends": "../path/to/root/package.json".

Ejemplos

Dada la siguiente estructura de carpetas y contenidos de package.json:

.
├── package.json
└── packages
    ├── cli
    │   └── package.json
    └── utils
        └── package.json
  • package.json
json
{
  "volta": {
    "node": "12.16.1",
    "yarn": "1.22.4"
  }
}
  • packages/cli/package.json
json
{
  "volta": {
    "extends": "../../package.json"
  }
}
  • packages/utils/package.json
json
{
  "volta": {
    "extends": "../../package.json"
  }
}

Ejecutar node en cualquier lugar del espacio de trabajo te haría usar Node 12.16.1. Y si actualizas esa versión en el package.json raíz, se usará automáticamente en todos los proyectos, sin tener que duplicar las configuraciones en cada subproyecto.

Fijando Herramientas

Cuando ejecutas volta pin para seleccionar una versión de una herramienta dentro de un espacio de trabajo, Volta siempre añadirá esas configuraciones al package.json más cercano que encuentre. Así, en el ejemplo de arriba, si ejecutaras volta pin node@14 dentro del subproyecto packages/utils, la nueva versión de Node será escrita en packages/utils/package.json y se aplicará solo al subproyecto utils, no a ninguno de los otros. Esto te permite personalizar fácilmente las versiones de herramientas por proyecto.

Si deseas usar volta pin para hacer un cambio a la configuración raíz, primero cd al raíz del espacio de trabajo y luego ejecuta volta pin desde allí.

Hooks

Si tu proyecto usa hooks de proyecto, puedes colocarlos ya sea en un directorio .volta en un subproyecto o en un directorio .volta en la raíz. Volta buscará hooks en cada ubicación apuntada por una clave "extends", para que las configuraciones puedan ser personalizadas a cualquier nivel que sea necesario.

Binarios Locales del Proyecto

Además de buscar hooks en cada nivel, Volta también buscará en cada nivel para detectar dependencias locales del proyecto para usar al ejecutar una herramienta de terceros. Intentará encontrarla en node_modules/.bin relativo a cada archivo referenciado por "extends".