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
{
"volta": {
"node": "12.16.1",
"yarn": "1.22.4"
}
}
packages/cli/package.json
{
"volta": {
"extends": "../../package.json"
}
}
packages/utils/package.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"
.