Node.JS: Como gerenciar diferentes versões do Node.JS na sua máquina

Quem trabalha com projetos em JavaScript ou no ecossistema do Node.js provavelmente já se deparou com a necessidade de usar versões diferentes da mesma ferramenta.
Isso acontece, por exemplo, quando um projeto mais antigo depende de uma versão específica do Node.js, enquanto outro exige uma versão mais recente.
Foi justamente esse cenário que motivou a escrita deste artigo. Ao longo do texto, veremos como gerenciar diferentes versões do Node.js na mesma máquina de forma prática, usando poucos comandos no terminal para instalar, alternar e organizar o ambiente de desenvolvimento.
O problema das versões
Em determinado momento, precisei voltar para a versão 10 do Node.js, mais especificamente a 10.16.3, para fazer algumas atualizações em um projeto desenvolvido algum tempo atrás.
Ao mesmo tempo, eu já estava utilizando a versão 13.5.0 na minha máquina para testar recursos e explorar mudanças mais recentes do ecossistema.
O problema é que manter apenas uma instalação do Node.js tornava esse cenário pouco prático: para trabalhar no projeto antigo, eu teria que remover a versão atual e instalar a anterior; para continuar os testes com a versão mais nova, precisaria repetir o processo novamente.
Foi aí que surgiu a necessidade de uma forma mais simples de alternar entre versões diferentes do Node.js sem precisar reinstalar tudo a cada troca. E é justamente nesse ponto que entra o NVM.
O que é o NVM (Node Version Manager)?
O NVM (Node Version Manager) é uma ferramenta criada para gerenciar diferentes versões do Node.js em uma mesma máquina. Com ele, é possível instalar, listar, alternar e remover versões do Node.js de forma prática, sem precisar reinstalar manualmente a ferramenta sempre que mudar de projeto.
O funcionamento do NVM acontece por linha de comando, ou seja, ele é instalado por usuário e utilizado diretamente no terminal do sistema. A ferramenta é compatível com diferentes shells, como sh, bash, zsh, ksh e dash, e pode ser utilizada em sistemas Unix e macOS.
No caso do Windows, uma alternativa comum é utilizá-lo por meio do WSL (Windows Subsystem for Linux), que permite executar um ambiente Linux dentro do sistema operacional da Microsoft.
O que é o Windows WSL? Confira neste artigo o que é, como instalar e como utilizar esta ferramenta super útil para executar comandos Linux no ambiente Windows.
Na prática, o grande benefício do NVM é justamente permitir que várias versões do Node.js coexistam na mesma máquina, facilitando a troca entre ambientes de desenvolvimento conforme a necessidade de cada projeto.
Experimentando o NVM
Como vimos até aqui, o NVM é uma ferramenta simples de usar. Antes de começar a gerenciar versões do Node.js, porém, precisamos instalá-lo na máquina.
Uma forma comum de fazer isso é executar, no terminal, o script de instalação disponibilizado no repositório oficial do projeto. Como a versão do instalador pode mudar com o tempo, o ideal é sempre consultar a documentação do NVM para copiar o comando mais atualizado.
Após executar a instalação, o script tentará adicionar ao arquivo de configuração do seu shell um trecho semelhante a este:
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvmEsse conteúdo costuma ser inserido em arquivos como ~/.bash_profile, ~/.zshrc, ~/.profile ou ~/.bashrc, dependendo do shell utilizado no sistema. Se esse trecho já estiver presente no arquivo correspondente, o NVM estará pronto para uso. Caso contrário, é possível adicioná-lo manualmente.
Também vale consultar a documentação oficial do projeto no GitHub, já que ela reúne outras formas de instalação e instruções específicas para diferentes ambientes.
Com a instalação concluída, já podemos começar a usar o NVM. Um dos primeiros comandos úteis é o nvm ls-remote, que lista as versões remotas do Node.js disponíveis para instalação:
Tudo pronto, e depois disso como podemos usar o NVM, é simples, como mencionei antes, podemos executar o comando nvm ls-remote para listar as versões do Node.JS:

versões listadas no node.js
E para fazer o download de uma versão específica, podemos usar o comando nvm install <versão> como na imagem abaixo:

download de uma versão específica no node.js
Mas já que podemos ter várias versões na nossa máquina, nada mais justo do que sermos capazes de listar essas versões, e para isso usamos o comando nvm ls:

comando nvm ls
Mas meu problema era que eu estava usando a versão 13.5.0 e queria usar a 10.16.3, que já fiz o download anteriormente, então podemos usar o comando use v10.16.3 para ativar essa versão:

comando de ativação da versão 10.16.3
NVM vs Docker: vale a pena usar NVM ou containers para gerenciar versões?
Quando o assunto é ambiente de desenvolvimento, é comum pensar no Docker como solução para praticamente tudo e faz sentido, já que ele ajuda bastante no isolamento de aplicações e dependências. Mas, no caso específico de alternar entre versões do Node.js na mesma máquina, o NVM costuma oferecer um caminho mais direto.
Com o Docker, seria necessário subir um contêiner ou manter imagens separadas para cada versão do Node.js que você deseja utilizar, o que adiciona uma camada extra de configuração e consumo de espaço em disco.
Já com o NVM, a troca entre versões acontece de forma muito mais simples no terminal, sem a necessidade de criar ou gerenciar contêineres para esse objetivo.
Na prática, isso significa que, para cenários em que a necessidade principal é instalar, listar e alternar entre versões do Node.js, o NVM tende a ser uma solução mais leve e objetiva.
Com comandos como nvm ls-remote, para listar versões disponíveis, e nvm use, para alternar entre elas, o processo fica bastante direto no dia a dia.
Conclusão
Ao longo deste artigo, vimos como o NVM pode facilitar o gerenciamento de diferentes versões do Node.js na mesma máquina, tornando mais simples a rotina de quem trabalha com projetos que dependem de ambientes distintos.
Em vez de reinstalar o Node.js a cada troca de projeto, o NVM permite instalar várias versões e alternar entre elas com poucos comandos, o que deixa o fluxo de trabalho mais prático e organizado.
Se você trabalha com projetos em Node.js ou está estudando esse ecossistema, vale a pena explorar a ferramenta e testar seus comandos no dia a dia.
E, se quiser continuar se aprofundando no assunto, a carreira Desenvolvimento Back-End Node.js da Alura pode ser um próximo passo interessante para seguir evoluindo com o ambiente já configurado.





