O que é NVM?

O que é NVM?

NVM (Node Version Manager) é um gerenciador de versão para Node.js. Para atualizar um pouco a definição, vamos lembrar que o Node.js é um ambiente de tempo de execução JavaScript orientado a eventos assíncronos para criar aplicativos de rede escalonáveis.

Abaixo você pode ver um exemplo em que criamos um servidor com Node.js que irá escutar a porta 3000 e simplesmente retornar "Hello World" para todas as requisições feitas a ele.

Você pode ler mais sobre Node.js aqui (espanhol).

Para executar o exemplo a seguir, você deve ter pelo menos uma versão do Node.js instalada em seu computador. A melhor forma de saber se já temos o Node.js instalado é executando o seguinte comando no console:

$ node --version

Se estiver instalado, deve nos dizer qual versão temos.

Agora você está em posição de entender qual é o propósito do Node Version Manager. Suponha que você tenha dois aplicativos que rodam no Node.js, mas ambos funcionam com versões diferentes do Node.js. Uma forma não muito prática seria instalar o Node.js toda vez que a versão correspondente à exigida pelo aplicativo for diferente da aquele que é necessário, já o temos instalado no computador. Desta forma poderíamos rodar a aplicação, aqui está o objetivo do NVM, pois ao rodar uma aplicação em Node.js, requer que tenhamos uma versão específica instalada em nosso computador.

Uma das vantagens de usar o NVM é que ele permite que você tenha várias versões diferentes do Node.js instaladas no mesmo computador, sem a necessidade de reinstalá-las sempre que necessário. Além disso, permite trocar a versão do Node.js ativa a qualquer momento por todas as instaladas no sistema. Para ser mais preciso, “todas as versões instaladas” no NVM.

Existe algo semelhante ao NVM em outros idiomas?

O NVM é semelhante ao Ruby Release Manager (RVM), uma ferramenta de linha de comando que instala, gerencia e funciona facilmente com vários ambientes Ruby. O RVM facilita adicionar, remover ou ter várias versões do Ruby e suas bibliotecas em seu diretório inicial.

Da mesma forma, o NVM é semelhante ao gerenciador de versões do Python (Pyenv) com o qual é possível alternar entre várias versões do Python, possibilitando definir uma única versão global do Python por usuário.


Como é a instalação do NVM?

O NVM é instalado como qualquer outro software, dependendo do sistema operacional instalado.

Instalando o NVM no Mac

Para instalar o NVM no Mac, você precisa ter o Homebrew. É aconselhável hospedá-lo dentro de '/usr/local', através do seguinte comando:

Se você quiser seguir a documentação, entre aqui.

Agora você está pronto para instalar o NVM no seu Mac com o homebrew. Existem duas maneiras: rapidamente ou a maneira recomendada.

Rapidamente

Recomendada

  1. Instale o NVM.

2. Crie um sistema de diretório para NVM.

3) Adicione a seguinte linha ao seu perfil: Alternativas .profile, .zshrc ou .zprofile.

4) Uma vez aberto o arquivo, digite as seguintes linhas:

Nota: Mais tarde vou fazer upload de um artigo explicando a instalação no Ubuntu e no Windows.

NVM na prática

Vamos voltar ao exemplo anterior onde temos dois aplicativos Node.js que requerem versões diferentes.

Vamos imaginar que temos um aplicativo A que requer a versão 8.1.4 e um aplicativo B que requer a versão 18.2.0.

Para simular este exemplo, primeiro precisamos saber quais versões do Node.js instalamos com o NVM. Abaixo vou explicar como saber isso.

Vamos executar o seguinte comando:

Obteremos algo assim:

A primeira lista que pode ser vista são as versões instaladas em nosso computador do NVM. Além disso, informa qual versão está selecionada com a qual o computador executará o Node.js. No meu caso é a versão 16.14.2.

Em seguida, ele nos informa qual versão o sistema operacional usará por padrão toda vez que o computador for reiniciado.

Por fim, mostra uma lista de diferentes tipos de versões do Node.js disponíveis para instalação. Estes são do tipo lts, ​​instáveis ​​e estáveis.

Em um artigo futuro explicarei mais sobre eles.

Vamos continuar com o exemplo. Vamos supor que queremos executar o aplicativo A que requer a versão 8.1.4.

Se não tivermos esta versão ao listar as versões instaladas do NVM, devemos instalá-lo com o seguinte comando:

Para continuar, devemos informar ao NVM que vamos usar a versão 8.1.4 com o seguinte comando:

Com o exposto, obteremos algo assim:

Se quisermos ter certeza, podemos executar o comando nvm ls anterior novamente.

Podemos ver que a versão 8.1.4 é a selecionada pelo NVM, o que significa que é aquela que o sistema operacional usará ao executar o aplicativo A.

O que segue é nos posicionarmos no diretório raiz do aplicativo A e confirmar que o arquivo package.json existe. Posteriormente, devemos executar npm start, o comando que vem por padrão em nosso package.json.

Excelente! Se você chegou até aqui, deve estar muito orgulhoso porque acabou de executar seu primeiro aplicativo do NVM. Agora vamos executar o aplicativo B. Para isso, devemos seguir os mesmos passos que fizemos com o aplicativo A.

Primeiro, verificamos se temos a versão 18.2.0 instalada no NVM e, em seguida, informamos ao NVM que vamos usar essa versão com o seguinte comando:

Se não foi instalado anteriormente, tentar selecioná-lo lançará uma mensagem de erro semelhante a esta:

Lo que debemos hacer es simplemente instalarla y volver a seleccionarla.

Em seguida, vamos para o diretório raiz do aplicativo B e executamos npm start.
Parabéns para você! Você acabou de executar seu segundo aplicativo do NVM.

Se quiséssemos executar novamente esses aplicativos, não seria necessário instalar novamente as versões exigidas pelos aplicativos porque eles já estão salvos no NVM.



Conclusão

O NVM é muito útil se precisarmos alternar entre diferentes versões do Node.js, seja para executar diferentes aplicativos ou para testar o mesmo aplicativo, executando-o com diferentes versões do Node.js.

Se tentássemos simular o mesmo exemplo que fizemos, mas em um ambiente Node.js sem NVM, teríamos que instalar a versão do Node.js exigida por cada aplicativo sempre que forem executados. Você vê?

Até logo!

💡
As opiniões e comentários expressos neste artigo são de propriedade exclusiva de seu autor e não representam necessariamente o ponto de vista da Revelo.

A Revelo Content Network acolhe todas as raças, etnias, nacionalidades, credos, gêneros, orientações, pontos de vista e ideologias, desde que promovam diversidade, equidade, inclusão e crescimento na carreira dos profissionais de tecnologia.