Node.js e controle de versão NPM com NVM

Nossa tradução anterior sobre as novas funções da 15ª versão do Node.js foi muito bem recebida pelos leitores da Habr, então hoje decidimos continuar o tópico e dizer a vocês como configurar o NVM com a versão 15 do Node.js e NPM 7 .


A versão 15 do Node.js foi lançada em 20 de outubro de 2020. Ele vem com o npm 7 e muitos novos recursos. Você já experimentou a nova versão?



Mas espere um minuto! Node.js 15 e npm 7 contêm alterações importantes. A atualização não prejudicaria os projetos existentes?



Em teoria, pode doer!







Felizmente, temos NVM (Node Version Manager) para nos salvar desse perigo. Vamos dar uma olhada mais de perto nesta ferramenta para atualizar as versões do node.js e do npm sem problemas.



Instale NVM



nvm



gerencia as versões node.js e npm. Ele é instalado para um usuário específico e pode ser chamado separadamente para cada shell. nvm



funciona com qualquer shell compatível com POSIX (sh, dash, ksh, zsh, bash), incluindo plataformas: unix, macOS e Windows WSL.



nvm



pode ser instalado usando os comandos curl ou wget:



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







Escrita install.sh



clona nvm repositório em ~/.nvm



e tenta adicionar as linhas de origem a partir do seguinte fragmento para o arquivo de perfil desejado ( ~/.bash_profile



, ~/.zshrc



, ~/.profile



ou ~/.bashrc



).



export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
      
      





Em ~/.bash_profile



podemos ver que as linhas são adicionadas:



export NVM_DIR="/Users/fuje/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
      
      





Usando NVM



Portanto, instalamos o nvm. Agora usamos este comando para instalar a versão mais recente do node.js:



$ nvm install node
Downloading and installing node v15.4.0...
Downloading https://nodejs.org/dist/v15.4.0/node-v15.4.0-darwin-x64.tar.xz...
######################################################################## 100.0%
Computing checksum with shasum -a 256
Checksums matched!
Now using node v15.4.0 (npm v7.0.15)
      
      





Os dados do exemplo acima saída indica que NPM 7.0.15



utilizada com node.js 15.4.0



. Vamos checar:



$ node -v
v15.4.0
$ npm -v
7.0.15
      
      





Também podemos especificar a versão necessária para instalação. O formato semântico da versão é determinado pelo SemVer :



$ nvm install 10.14.0
Downloading and installing node v10.14.0...
Downloading https://nodejs.org/dist/v10.14.0/node-v10.14.0-darwin-x64.tar.xz...
######################################################################## 100.0%
Computing checksum with shasum -a 256
Checksums matched!
Now using node v10.14.0 (npm v6.4.1)
      
      





Se a versão especificada já foi instalada, ela não é reinstalada:



$ nvm install 10.14.0
v10.14.0 is already installed.
Now using node v10.14.0 (npm v6.4.1)
      
      





Podemos exibir todas as versões instaladas:



$ nvm ls
->     v10.14.0
       v10.15.0
       v10.16.0
       v12.16.0
        v13.9.0
        v15.4.0
         system
default -> 12.16.0 (-> v12.16.0)
node -> stable (-> v15.4.0) (default)
stable -> 15.4 (-> v15.4.0) (default)
iojs -> N/A (default)
unstable -> N/A (default)
lts/* -> lts/fermium (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.23.0 (-> N/A)
lts/erbium -> v12.20.0 (-> N/A)
lts/fermium -> v14.15.1 (-> N/A)
      
      





Nos exemplos de saída acima, o símbolo ->



indica que a versão atual do node.js é 10.14.0



. A seta também representa valores para default



( 12.16.0



), node



( 15.4.0



) e stable



( 15.4.0



).



nvm use



substitui a versão atual:



$ nvm use 12.16.0
Now using node v12.16.0 (npm v6.14.8)
$ nvm use 10.16.0
Now using node v10.16.0 (npm v6.14.5)
$ nvm use 13.9.0
Now using node v13.9.0 (npm v6.13.7)
$ nvm use default
Now using node v12.16.0 (npm v6.14.8)
$ nvm use node
Now using node v15.4.0 (npm v7.0.15)
$ nvm use stable
Now using node v15.4.0 (npm v7.0.15)
      
      





Você pode estar se perguntando como é que v10.16.0



usa uma versão posterior do npm do que v13.9.0



. Esta tarefa pode ser resolvida usando os seguintes comandos:



$ nvm use 10.16.0
$ npm install -g npm@6.14.5
      
      





Este comando permite que você obtenha a versão npm mais recente compatível com a versão atual do Node.js:



$ nvm install-latest-npm
      
      





nvm use



instala a versão correta apenas para o shell atual. Se você alterar o shell, a versão recém-atualizada do node.js será perdida.



Como posso tornar uma versão específica do Node.js persistente?



A versão padrão é aquela distribuída para todos os shells.



O comando nvm alias



permite definir a versão padrão.



$ nvm alias default 10.16.0
      
      







Por conveniência, você pode criar um arquivo .nvmrc



que aceite o formato SemVer node



ou default



. Depois disso nvm use



, nvm install



, nvm exec



, nvm run



e nvm which



usará a versão especificada no arquivo .nvmrc



, a menos que outra linha de comando.



$ cat .nvmrc
15.4.0
$ nvm use
Found '/Users/fuje/.nvmrc' with version <15.4.0>
Now using node v15.4.0 (npm v7.0.15)
      
      





Podemos verificar a versão atual com o seguinte comando:



$ nvm current
v15.4.0
      
      





ls-remote



exibe todas as versões disponíveis, mas esteja preparado para uma lista muito longa.



$ nvm ls-remote
      
      





Observe que o nome da versão abreviada encurta significativamente a lista inteira.



$ nvm ls-remote 15
        v15.0.0
        v15.0.1
        v15.1.0
        v15.2.0
        v15.2.1
        v15.3.0
->      v15.4.0
      
      





nvm which



indica o caminho para o executável onde nvm



foi instalado. Instalamos versões do node.js como 10.14.0



, 10.15.0



e 10.16.0



. Aqui estão os resultados nvm which



:



$ nvm which 10.14.0
/Users/fuje/.nvm/versions/node/v10.14.0/bin/node
$ nvm which 10.15.0
/Users/fuje/.nvm/versions/node/v10.15.0/bin/node
$ nvm which 10.16.0
/Users/fuje/.nvm/versions/node/v10.16.0/bin/node
$ nvm which 10.15
/Users/fuje/.nvm/versions/node/v10.15.0/bin/node
$ nvm which 10.12
N/A: version "v10.12" is not yet installed.
You need to run "nvm install 10.12" to install it before using it.
$ nvm which 10
/Users/fuje/.nvm/versions/node/v10.16.0/bin/node
      
      





A versão especificada do Node.js pode ser usada diretamente para iniciar aplicativos:



$ nvm run 10.15.0 app.js
      
      





Como alternativa, este comando é executado node app.js



com a variável PATH indicando a versão 10.15.0



.



$ nvm exec 10.15.0 node app.js
      
      





Se você precisar de mais comandos nvm, execute o comando help



:



$ nvm --help
      
      







Atualização NVM



Podemos usar nvm



node.js e npm para atualizar. Mas como faço para me atualizar nvm



?



Vamos tentar!



Antes de atualizar, nós instalamos nvm



0.34.0



.



Atualizamos para a versão 0.37.2.



$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 13527  100 13527    0     0  23046      0 --:--:-- --:--:-- --:--:-- 23083
=> nvm is already installed in /Users/fuje/.nvm, trying to update using git
=> => Compressing and cleaning up git repository
=> nvm source string already in /Users/fuje/.bash_profile
=> bash_completion source string already in /Users/fuje/.bash_profile
=> Close and reopen your terminal to start using nvm or run the following to use it now:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
      
      





Conforme declarado na saída, precisamos fechar e reabrir o terminal para usar a nova versão:



$ nvm --version
0.37.2
      
      





Em comparação com a versão 0.34.0



, a versão 0.37.2



adicionou uma função nvm set-colors



de saída para o console. Mostra as seguintes cores por







padrão nvm ls



:







Definir novas cores:



$ nvm set-colors cgYmW
      
      





nvm ls



exibe a saída com novas cores:







Conclusão



nvm



simplifica o controle de versão node.js e npm. Agora estamos definitivamente prontos para mudar para node.js 15 e npm 7. Espero que você tenha achado isso útil. Outras publicações do autor podem ser encontradas aqui .



All Articles