Instalando e gerenciando várias versões do Node.js com NVM \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 10 Horas 

 32 Min 

 04 Seg 

   Tempo restante da oferta: 10 32 04 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Instalando e gerenciando várias versões do Node.js com NVM  [ Node ](https://www.treinaweb.com.br/blog/categoria/node-js) 

# Instalando e gerenciando várias versões do Node.js com NVM

 Aprenda a instalar e gerenciar várias versões do Node.js em sua máquina.

 [ Akira Hanashiro ](https://www.treinaweb.com.br/blog/autor/akira-hanashiro) 7 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/06/27155958/nvm.png)  

Olá Web Developers!

Você já teve problemas ao atualizar o Node.js e algum projeto parar de funcionar?

Já aconteceu comigo várias vezes, mas normalmente era só reinstalar as dependências que tudo voltava a funcionar. Até que um dia eu tive que fazer uma alteração em um sistema em que eu não mexia há muito tempo.

Não deu problema no código do sistema, foi mais um problema de compatibilidade do Node.js com as versões mais antigas de algumas ferramentas que eram usadas naquele projeto, como o `Gulp` e `Babel`. Era muito mais rápido instalar uma versão mais antiga do Node.js do que 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. Então percebi que com a necessidade de manter projetos mais antigos, era chegada a hora de manter mais de uma versão do Node.js instalado na minha máquina (que eu evitei por muitos anos).

 [ ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/10/E-BOOK-GRATUITO-COMECANDO-JS.png) ](https://www.treinaweb.com.br/ebook/guia-javascript)

## Conheça o NVM!

Ficar gerenciando várias versões de algo pode ser chato, mas o `NVM` (Node Version Manager) deixa tudo bem simples. É um dos gerenciadores de versão de Node.js mais utilizados.

Com o NVM a gente pode ver as versões do Node, escolher quais queremos instalar ou desisntalar e definir qual queremos usar em cada momento ou projeto.

Ele funciona em MacOS e Linux. Caso você precise gerenciar no Windows existe um outro projeto chamado **nvm-windows** que também é muito bom (recomendado até mesmo por NPM, Google e Microsoft) e os comandos são iguais aos do **NVM**.

## 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](https://github.com/nvm-sh/nvm "página do repositório do NVM no GitHub").

[  ![React - Despertando o Poder dos Hooks](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/react.svg)   Curso React - Despertando o Poder dos Hooks Conhecer o curso ](https://www.treinaweb.com.br/curso/react-despertando-o-poder-dos-hooks)

### 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

```bash
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](https://github.com/coreybutler/nvm-windows/releases "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:

```bash
$ 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.

```bash
$ 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`).

```bash
$ 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:

```bash
$ 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`

```bash
$ 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.

```bash
$ nvm use vX.X.X

```

Para usar a versão mais recente, digite `node` no lugar da versão:

```bash
$ 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.

```bash
$ nvm alias meunome vX.X.X

```

Com isso você poderá chamar a versão `vX.X.X` por `meunome`, como em:

```bash
$ 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.

```bash
$ 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.

```bash
$ 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:

```bash
$ 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`.

```bash
$ 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.

```bash
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:

```bash
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.

 [ ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/06/BANNER-BLOG-2-2.jpg) ](https://api.whatsapp.com/send/?phone=5544988609539&text=Olá,+li+o+artigo+no+blog+e+gostaria+de+saber+mais+sobre+a+TreinaWeb.)

- [ #NodeJS ](https://www.treinaweb.com.br/blog/tag/nodejs)

Autor

 ![Akira Hanashiro](//secure.gravatar.com/avatar/d107ca73135bc62770a67ebbfe4cf80d?d=mm)

## Akira Hanashiro

 Graduado em Análise e Desenvolvimento de Sistemas, Pós-graduado em Projetos e Desenvolvimento de Aplicações Web e MBA em Machine Learning. Especializado em Front End e curte desenvolvimento de jogos. 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/akira-hanashiro)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/10/instalacao-do-node-js-windows-mac-e-linux-400x280.png)  [ Node ](https://www.treinaweb.com.br/blog/categoria/node-js) 

     6 anos atrás

    ##  [ Instalação do Node.js - Windows, Mac e Linux ](https://www.treinaweb.com.br/blog/instalacao-do-node-js-windows-mac-e-linux) 

     Veja como é simples baixar e instalar o Node.js em sistemas Windows, Mac e Linux via instaladores e gerenciadores de pacote.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/03/guia-da-linguagem-python-400x280.png)  [ Python ](https://www.treinaweb.com.br/blog/categoria/python) 

     6 anos atrás

    ##  [ Guia da linguagem Python ](https://www.treinaweb.com.br/blog/guia-da-linguagem-python) 

     Entenda os principais conceitos para iniciar seus estudos neste guia da linguagem Python.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2016/10/yarn-um-novo-gerenciador-de-dependencias-para-javascript-400x280.jpg)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     10 anos atrás

    ##  [ Yarn: Um novo gerenciador de dependências para JavaScript ](https://www.treinaweb.com.br/blog/yarn-um-novo-gerenciador-de-dependencias-para-javascript) 

     Yarn nasceu para ser uma opção rápida e segura de se gerenciar dependências em JavaScript.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/TWELVE-FACTOR-APP-400x280.png)  [ Engenharia de Software ](https://www.treinaweb.com.br/blog/categoria/engenharia-de-software) 

     6 anos atrás

    ##  [ O que são os 12 Factor App? - Parte 1 ](https://www.treinaweb.com.br/blog/o-que-sao-os-12-factor-app-parte-1) 

     Se você trabalha desenvolvendo aplicativos que funcionam como um serviço, conheça os 12 (Twelve) Factor App, uma metodologia que te ajudará a criar aplicações melhores.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/GUIA-LINGUAGEM-JAVASCRIPT-400x280.png)  [ Desenvolvimento Front-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-front-end) 

     6 anos atrás

    ##  [ Guia da Linguagem JavaScript ](https://www.treinaweb.com.br/blog/guia-da-linguagem-javascript) 

     Neste Guia da Linguagem Javascript vamos abordar aspectos fundamentais, como: tipos de dados, variáveis, objetos, arrays e muito mais.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/06/14170401/COMANDOS-SYMFONY-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     8 anos atrás

    ##  [ Principais comandos do Symfony CLI ](https://www.treinaweb.com.br/blog/principais-comandos-do-symfony-cli) 

     Nesse artigo falaremos sobre o utilitário de linha de comando symfony. Veremos como realizar a criação de projetos, utilizar o servidor de desenvolvimento, executar comandos da aplicação e outros recursos.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/02/TWELVE-FACTOR-APP-400x280.png)  [ Engenharia de Software ](https://www.treinaweb.com.br/blog/categoria/engenharia-de-software) 

     6 anos atrás

    ##  [ O que são os 12 Factor App? – Parte 2 ](https://www.treinaweb.com.br/blog/o-que-sao-os-12-factor-app-parte-2) 

     No artigo anterior, foi apresentado o conceito do 12 Factor App. Nessa segunda parte, veremos mais três fatores: Backing Services; Build, Release, Run e Processes.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/03/01154814/NUGET-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     7 anos atrás

    ##  [ O que é o NuGet? ](https://www.treinaweb.com.br/blog/o-que-e-o-nuget) 

     Um gerenciador de pacote é essencial em qualquer plataforma de desenvolvimento moderna. Para o .NET há o Nuget, o conheça em detalhes neste artigo.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2017/07/configurando-um-servidor-web-para-producao-com-o-serverpilot-400x280.png)  [ Computação em nuvem ](https://www.treinaweb.com.br/blog/categoria/computacao-em-nuvem) 

     10 anos atrás

    ##  [ Configurando um servidor web para produção com o ServerPilot ](https://www.treinaweb.com.br/blog/configurando-um-servidor-web-para-producao-com-o-serverpilot) 

     Aprenda a configurar um servidor web com PHP e MySQL de forma rápida e segura, com gerenciador web de aplicações e instalador automático do WordPress com o ServerPilot.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/02/07152007/AWS-CLI-400x280.png)  [ Amazon ](https://www.treinaweb.com.br/blog/categoria/amazon) 

     7 anos atrás

    ##  [ Como instalar e configurar o AWS CLI ](https://www.treinaweb.com.br/blog/como-instalar-e-configurar-o-aws-cli) 

     O AWS CLI é uma ferramenta em linha de comando capaz de gerenciar recursos na AWS. Com ela é possível listar todas as EC2 no seu ambiente, ou até mesmo criar um novo banco de dados com RDS com poucos comandos, tudo isso sem precisar acessar o console da AWS. Nesse artigo vamos acompanhar como é o processo de instalação e configuração do AWS CLI.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/05/como-instalar-o-csharp-e-nosso-primeiro-exemplo-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     5 anos atrás

    ##  [ Como instalar o C# e nosso primeiro exemplo ](https://www.treinaweb.com.br/blog/como-instalar-o-csharp-e-nosso-primeiro-exemplo) 

     Neste artigo veremos como instalar o C# nos sistemas Windows, Linux e MacOS e também veremos como escrever nosso primeiro programa.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/10/o-que-e-e-como-comecar-com-golang-400x280.jpg)  [ Guias ](https://www.treinaweb.com.br/blog/categoria/guias) 

     3 anos atrás

    ##  [ Guia da linguagem Go ](https://www.treinaweb.com.br/blog/guia-da-linguagem-go) 

     Nesse guia de Go você aprenderá o necessário para criar os seus primeiros softwares com a linguagem de programação Go. Acesse agora mesmo!

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **10h 32min 04s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
