Você já teve problemas ao atualizar o Node.js e algum projeto parar de funcionar? Geralmente naquela hora de rodar um npm install
informa que você está utilizando uma versçao diferente do Node à do projeto.
É um um problema comum de compatibilidade do Node.js com as versões mais antigas de algumas ferramentas em algum projeto, como o Gulp
e Babel
. Geralmente os desenvolvedores instalam uma versão mais antiga do Node.js ao invés de arrumar a estrutura responsável pelo build da aplicação.
Mesmo que uma reinstalação dos pacotes fosse a solução, é desperdício de tempo ter que ficar reinstalando tudo em um projeto a cada vez que eu atualizo o Node, sendo que normalmente a alteração que eu tinha que fazer em um projeto antigo seria mudar só uma linha. É preciso, em projetos antigos, manter mais de uma versão do Node.js instalado na minha máquina para que possa rodar facilmente o projeto. Este artigo tem este objetivo com o NVM.
O que é o NVM?
O NVM – Node Version Manager (gerenciador de versão do Node), permite que você instale e gerencie diferentes versões do Node. js em sua máquina de forma simples, bem como, proporciona a troca de uma versão para outra com um simples comando no terminal e isso te abre um leque de possibilidades.
Agora vamos iniciar o tutorial, mostrando como instalar o NVM para MacOs, Linux e Windows e como utilizar:
Aposte na Mega da Virada 2024!
Prepare-se para uma chance única de mudar sua vida. O prêmio histórico de R$ 600 milhões da Mega da Virada 2024 está esperando por você!
Além disso, conheça os bolões da Sorte Online, que são os mais premiados e oferecem as melhores chances de ganhar! Ao participar dos bolões, você se junta a centenas de apostadores e aumenta suas chances de faturar uma bolada.
Faça sua Aposta AgoraInstalação do NVM (MacOS e Linux)
É recomendado desinstalar qualquer versão do Node.js presente em sua máquina antes de instalar o NVM para evitar colisões.
Para instalar o NVM basta usar o curl ou Wget. Execute no terminal:
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
ou
$ wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
Isso vai executar um script que vai clonar o repositório do NVM e jogar em um diretório chamado ~/.nvm/
, que é onde serão instaladas as várias versões do Node.js que quisermos.
A versão do NVM no momento de escrita deste post era a v0.34.0
. Para garantir uma versão mais recente, copie esse mesmo comando na página do repositório do NVM no GitHub.
Instalação no MacOS usando Homebrew
Caso queira instalar usando o Homebrew, basta executar o comando $ brew install nvm
.
Depois precisamos criar um diretório para o NVM, lugar onde ele fará as instalações das várias versões do Node.js. Para isso basta executar o comando $ mkdir ~/.nvm/
.
Por último é só configurar as variáveis de ambiente. Abra o arquivo .bash_profile
com o comando vim ~/.bash_profile
e cole o seguinte conteúdo
export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh
E então basta executar source ~/.bash_profile
.
Instalação do nvm-windows (Windows)
Como dito anteriormente, o NVM é só para MacOS e Linux. Você pode conseguir utilizá-lo no Windows usando o WSL (Windows Subsystem for Linux) ou pode usar um outro programa que é o nvm-windows
.
A proposta do nvm-windows
é funcionar igual ao NVM. Eles oferecem um instalador que você pode baixar pela lista de lançamentos do nvm-windows no repositório do GitHub.
Comandos do NVM (e do nvm-windows)
Caso você tenha acabado de instalar, pode ser necessário reiniciar o seu terminal ou sua máquina.
O nvm-windows
precisa que o terminal seja iniciado em modo administrador e alguns comandos do nvm
ainda não são completamente suportados.
Os comandos são bem simples.
Listar versões instaladas
Para ver as versões que estão instaladas em sua máquina:
$ nvm ls
Listar versões disponíveis para instalação
Este comando lista todas as versões disponíveis para baixar e instalar na sua máquina. Esse número de versão será usado no comando para realizar a instalação.
$ nvm ls-remote
Instalar uma versão
Para instalar usamos o comando install
seguido pelo número da versão que queremos (mostrada no comando anterior, ls-remote
).
$ nvm install vX.X.X
Basta mudar os X
pelos números da versão que quer baixar como v.0.11.5
ou v.12.4.0
.
Para instalar a versão mais recente, utilize node
no lugar do número da versão:
$ nvm install node
A primeira versão que você instalar será usada por padrão sempre que você abrir o terminal. A versão padrão pode ser alterada depois.
Desinstalar uma versão
O comando uninstall
é usado para desinstalar uma versão presente em nossa máquina. É utilizado da mesma maneira que o install
$ nvm uninstall vX.X.X
Usar uma versão do Node.js
Sempre que você abrir o terminal, a versão do Node.js usada é sempre a definida como padrão. Para usar outra versão instalada, execute o comando use
seguido pela versão que você quer.
$ nvm use vX.X.X
Para usar a versão mais recente, digite node
no lugar da versão:
$ nvm use node
Lembrando que ao abrir um novo terminal, a versão usada será novamente a definida como padrão.
Definir nome para uma versão
Para não ter que ficar chamando uma versão pelo seu número, podemos definir um tipo de apelido para cada versão. Para isso usamos o comando alias
e passamos o nome do apelido e a versão que queremos apelidar.
$ nvm alias meunome vX.X.X
Com isso você poderá chamar a versão vX.X.X
por meunome
, como em:
$ nvm use meunome
Remover um nome de versão
Se você não quiser mais aquele apelido que você deu para uma versão, basta executar o comando unalias
seguido pelo apelido que você quer esquecer.
$ nvm unalias meunome
Definir uma versão padrão
Para definir a versão que será usada sempre que você abrir o terminal, use o comando alias
passando default
como nome e em seguida a versão que você quer que seja a principal.
$ nvm alias default vX.X.X
Para que a versão padrão seja a versão instalada mais recente, basta escrever node
no lugar do número da versão:
$ nvm alias default node
Indicação da versão atual
Para saber qual a versão atual do Node.js o terminal está usando, basta executar o comando current
.
$ 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 6 do Node.js e já mandar ele automaticamente instalar os pacotes globais do NPM que instalamos quando estávamos usando a versão 5.
nvm install 6 --reinstall-packages-from=5
Como aprendemos até aqui, node
é um atalho para indicar a versão mais recente. Caso queira instalar a versão mais recente disponível e já migrar os pacotes globais da versão mais recente que está instalada na sua máquina, basta executar:
nvm install node --reinstall-packages-from=node
No momento esta funcionalidade ainda não está disponível para o nvm-windows
, sendo necessária a instalação manual dos pacotes globais sempre que instalar uma nova versão do Node.js.
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:
v12.4.0
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.
Conclusão
Eu não costumava ligar para ter várias versões do Node.js em uma mesma máquina, pois sempre conseguia fazer funcionar em versões novas. Mas com o tempo pode acontecer de você ter que mexer em um código antigo e vai desperdiçar tempo arrumando para fazer funcionar caso esteja com uma versão nova.
Não só para linguagens de programação como Ruby e Python, mas outras ferramentas para desenvolvimento também como Unity, prefira sempre usar um gerenciador de versões, pois vai te economizar tempo e trabalho.
LEIA TAMBÉM