Skip to content

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
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"
  }
}

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".