Skip to content

Alternando Entre Projetos

Uma das principais vantagens do Volta é como ele lida sem esforço com diferentes versões de ferramentas em projetos diferentes. Esta página explica como o Volta gerencia automaticamente seu ambiente JavaScript quando você se move entre projetos.

Troca Automática de Versões

Diferente de outros gerenciadores de versões que exigem que você alterne manualmente entre versões de ferramentas, o Volta gerencia isso automaticamente com base em seu diretório atual.

Como Funciona

  1. Quando você executa comandos JavaScript (como node, npm ou binários de pacotes), os shims do Volta interceptam o comando
  2. O Volta verifica seu diretório atual para ver se você está em um projeto com versões de ferramentas fixadas
  3. Se estiver, o Volta usa as versões fixadas no package.json desse projeto
  4. Se você não estiver em um projeto com versões fixadas, o Volta usa suas ferramentas padrão

Tudo isso acontece de forma transparente, sem comandos adicionais necessários.

Exemplo de Fluxo de Trabalho

Imagine que você tem dois projetos com diferentes requisitos de Node.js:

Projeto A (~/projects/project-a/package.json):

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

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

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

Seu fluxo de trabalho pode ser assim:

bash
# No projeto A
cd ~/projects/project-a
node --version  # mostra v14.19.1
npm --version   # mostra v6.14.16

# Alternando para o projeto B
cd ~/projects/project-b
node --version  # automaticamente mostra v16.14.2
npm --version   # automaticamente mostra v8.5.0

# Fora de qualquer projeto
cd ~
node --version  # mostra sua versão padrão do Node

Projetos Aninhados

Se você tem projetos aninhados, o Volta usará as versões de ferramentas do package.json mais próximo com seção volta.

Por exemplo:

/parent-project/package.json (tem seção volta, node@14)
/parent-project/child-project/package.json (tem seção volta, node@16)
/parent-project/other-directory/ (sem package.json)

Se você executar comandos em:

  • /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

Binários de Pacotes

A troca automática do Volta também se aplica a binários de pacotes. Por exemplo, se você tem uma versão específica do projeto do TypeScript e executa tsc, o Volta garante que a versão correta seja usada.

Pacotes Globais vs. Locais

Quando você executa um binário de pacote:

  1. Se o binário existe no node_modules/.bin/ do projeto, o Volta usa essa versão
  2. Se não existe, mas o pacote foi instalado globalmente via Volta, ele usa essa versão
  3. Caso contrário, mostra um erro de comando não encontrado

Solução de Problemas

Se você encontrar problemas com troca de versões:

  • Verifique se seu projeto tem uma seção volta em seu package.json
  • Execute volta list all para verificar suas ferramentas instaladas
  • Verifique se as ferramentas que você precisa estão fixadas ao seu projeto ou instaladas como versão padrão
  • Execute volta which node para ver qual versão do Node.js o Volta está usando e por quê