Volta vs nvm: Qual gerenciador de versões do Node para CI?
O nvm troca versões do Node sob demanda; o Volta fixa o toolchain no package.json e troca automaticamente, em Rust, sem shell hooks.
O nvm é o gerenciador de versões do Node consolidado, guiado pelo .nvmrc e por funções de shell. O Volta é um gerenciador de toolchain baseado em Rust que fixa Node, npm e ferramentas no package.json e troca de versão automaticamente por projeto.
| Volta | nvm | |
|---|---|---|
| Implementação | Binário em Rust | Funções de shell |
| Troca de versão | Automática por projeto | Manual / .nvmrc |
| Local do pin | package.json (campo volta) | .nvmrc |
| Fixa gerenciadores de pacotes | Sim (npm/yarn/pnpm) | Apenas Node |
| Velocidade | Rápida | Boa |
No CI
O Volta fixa o Node e o gerenciador de pacotes diretamente no package.json e troca sem shell hooks, o que faz as versões local e de CI coincidirem com configuração mínima. O nvm é mais simples e ubíquo, e no CI muitos times apenas usam setup-node com .nvmrc em vez de rodar o nvm. A força do Volta é travar todo o toolchain, não apenas o Node.
Fixe e faça cache
Commite o pin do volta (ou o .nvmrc) para que o CI use as versões locais exatas, e faça cache do toolchain instalado. A instalação roda nos runners de CI; runners gerenciados mais rápidos encurtam o setup a frio do toolchain.
O veredito
Quer troca automática e um toolchain (Node + gerenciador de pacotes) fixado no package.json: Volta. Quer o padrão simples e ubíquo (frequentemente via setup-node): nvm. Commite o pin de qualquer forma para um CI reproduzível.