Workspaces
Detalhes sobre como usar o Volta em ambientes de workspace, onde múltiplos projetos em um único repositório desejam compartilhar configurações do Volta.
TIP
Este recurso foi adicionado no Volta 0.8.2 e não funciona em versões anteriores.
Configuração de Extensão
Na seção "volta"
do seu package.json
, você pode especificar um campo chamado "extends"
. O valor desse campo deve ser o caminho para outro arquivo JSON que também tenha uma seção "volta"
. Caminhos relativos são resolvidos em relação ao arquivo que os define. Quaisquer configurações do Volta (como versões de "node"
ou "yarn"
) serão mescladas com as configurações do arquivo apontado por "extends"
, com prioridade para o arquivo atual. Assim, se você quiser que todos os projetos usem a mesma versão do Node, pode definir essas versões na raiz e, em cada projeto, apenas adicionar "extends": "../path/to/root/package.json"
.
Exemplo
Dada a seguinte estrutura de pastas e conteúdos 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"
}
}
Executar node
em qualquer lugar do workspace usará o Node 12.16.1
. Se você atualizar essa versão no package.json
raiz, ela será usada automaticamente em todos os projetos, sem precisar duplicar configurações em cada subprojeto.
Fixando Ferramentas
Quando você executa volta pin
dentro de um workspace para escolher versões de ferramentas, o Volta sempre adicionará essas configurações ao package.json
mais próximo que encontrar. Assim, no exemplo acima, se você rodar volta pin node@14
dentro do subprojeto packages/utils
, a nova versão do Node será gravada em packages/utils/package.json
e só se aplicará ao subprojeto utils
, não aos demais. Isso permite personalizar facilmente as versões das ferramentas por projeto.
Se quiser modificar a configuração raiz com volta pin
, primeiro cd
até a raiz do workspace e execute volta pin
de lá.
Hooks
Se seu projeto usa hooks de projeto, você pode colocá-los no diretório .volta
do subprojeto ou no .volta
da raiz. O Volta procurará hooks em cada local referenciado por "extends"
, permitindo personalização em qualquer nível necessário.
Binários Locais do Projeto
Além de procurar hooks em cada nível, o Volta também procurará dependências locais do projeto em cada nível ao executar ferramentas de terceiros. Ele tentará encontrar o binário em node_modules/.bin
relativo a cada arquivo referenciado por "extends"
.