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:
Instalaçã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