Nvm: Gerenciando versões de NodeJs

NVM

Se você trabalha com vários projetos Node, já percebeu como é complicado quando os projetos requerem versões diferentes.

Bom, para resolver esse problema existe um projeto chamado NVM (Node Version Manager), onde você pode ter várias versões do NodeJs instalado em sua máquina e quando precisar rodar um projeto em uma versão especifica basta fazer a troca pelo terminal.

Instalação em ambiente Linux e MacOS

O processo de instalação é bem simples e você pode conferir na documentação oficial.

Resumidamente o comando de instalação é esse:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | $SHELL

Ou via wget:

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | $SHELL

Obs.: Sempre é bom instalar a última versão da ferramenta. Perceba que no link acima está sendo informado a versão 0.37.2, mas você pode conferir aqui qual a última versão do projeto e alterar o comando de instalação.

Se você utiliza o ZSH será necessário adicionar o seguinte código no arquivo ~/.zshrc:

export NVM_DIR=~/.nvm
 [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"

Pronto, agora feche seu terminal, abra novamente e execute o seguinte comando para verificar se o NVM foi instalado corretamente:

nvm --version

Instalação em ambiente Windows

A instalação é bem simples, basta acessar esse site e fazer o download do arquivo nvm-setup.zip. Após isso execute o arquivo que está dentro do zip e prossiga com a instalação. Depois reinicie seu computador e verifique se a instalação ocorreu com sucesso executando o comando nvm --version no terminal.

Conhecendo a ferramenta

O primeiro comando e o mais importante é o nvm. Se a sua instalação foi bem sucedida, assim que você digitar esse comando no terminal você irá ver algo parecido com a imagem abaixo:

Dentre essa grande quantidade de comandos disponíveis vou mostrar alguns mais interessantes:

1- Listar versões disponíveis para instalação:

nvm ls-remote

2- Listar versões instaladas em sua máquina:

nvm ls

3- Instalar uma versão:

nvm install NUMERO_VERSAO

Exemplo: nvm install 12.20.1

4- Desinstalar uma versão:

nvm uninstall NUMERO_VERSAO

Exemplo: nvm uninstall 12.20.1

5- Usar uma versão:

nvm use NUMERO_VERSAO

Exemplo: nvm use 12.20.1

6- Definir nome para uma versão:

nvm alias MEU_NOME NUMERO_VERSAO

Exemplo: nvm alias node12 12.20.1

Com isso você poderá usar uma versão pelo nome definido e não mais pelo número da versão. Exemplo: nvm use node12

7- Remover um nome de versão:

nvm unalias MEU_NOME

Exemplo: nvm unalias node12

8- Definir uma versão padrão para o sistema operacional:

nvm alias default NUMERO_VERSAO

Exemplo: nvm alias default 12.20.1

9- Descobrir versão atual que está sendo utilizada no terminal:

nvm current

Migração de pacotes globais

Quando alteramos a versão do Node.js que está sendo utilizada, a versão do NPM muda junto. Isso significa que se você utiliza algum pacote do NPM globalmente em uma versão, não terá acesso a ele quando estiver usando outra versão.

Para não ter o trabalho de instalar cada pacote global a cada nova instalação do Node.js, basta adicionar --reinstall-packages-from.

Com esse comando podemos, por exemplo, instalar a versão 15 do Node.js e já mandar ele automaticamente instalar os pacotes globais do NPM que instalamos quando estávamos usando a versão 12.

nvm install 15.8.0 --reinstall-packages-from=12.20.1

Definição de versão por projeto

A intenção de usar o NVM é poder ter uma versão do Node.js para cada projeto, mas é muito difícil conseguir lembrar qual a versão foi usada em cada um.

Para isso, basta criar na raiz do projeto um arquivo com o nome .nvmrc e colocar dentro dele o número da versão do Node.js que está sendo utilizada nesse projeto, como 12.20.1

Com isso, ao abrir o terminal dentro do projeto e executar o comando nvm use, o NVM vai automaticamente encontrar o arquivo .nvmrc e utilizar a versão indicada.

Comentários

Postagens mais visitadas deste blog

pgAdmin 4: Configurando um server do Postgres

Oh My Zsh: Melhorando a produtividade do seu terminal

Git: Renomear, desfazer, mesclar, editar ou excluir commits