Skip to content

Configurando nvmrc ​

Introdução ​

Ao desenvolver vários projetos, cada projeto pode exigir uma versão diferente do Node.js. Nesses casos, precisamos especificar a versão do Node.js para cada projeto executando os comandos nvm install e nvm use no terminal para instalar e alternar versões.

No entanto, executar comandos manualmente no terminal toda vez se torna complicado, especialmente à medida que o número de projetos aumenta. É fácil esquecer de alternar versões ou alternar para a versão errada, o que pode fazer com que os projetos não iniciem ou encontrem erros durante a execução.

É aqui que precisamos de um método para gerenciar versões do Node.js e alternar automaticamente entre elas, e é aqui que o .nvmrc entra em jogo.

O que é .nvmrc? ​

Da explicação acima, você pode entender que o arquivo .nvmrc é usado para gerenciar a versão do Node.js para nosso projeto. Este arquivo é muito simples: ele contém apenas texto representando uma versão do Node.js que o nvm pode reconhecer, como v18.12.0.

Como usar o arquivo .nvmrc? ​

Você pode criar um arquivo .nvmrc com conteúdo que seja um número de versão do Node.js ou outro texto que o nvm possa entender. Para detalhes, você pode digitar nvm --help no terminal.

Com o arquivo .nvmrc, quando você executa comandos como nvm use, nvm install, nvm exec, nvm run e nvm which no terminal sem especificar uma versão, a versão especificada no arquivo .nvmrc será usada.

Criando um arquivo .nvmrc ​

Por exemplo, no diretório atual, para fazer o nvm especificar a versão mais recente do 18.12, a versão LTS mais recente ou a versão mais recente do Node.js, você pode usar o comando echo para criar um arquivo .nvmrc:

bash
$ echo "18.12" > .nvmrc
# Definir para a versão LTS mais recente
$ echo "lts/*" > .nvmrc
# Definir para a versão mais recente
$ echo "node" > .nvmrc

Comandos como nvm use percorrerão a estrutura de diretórios para cima a partir do diretório atual procurando o arquivo .nvmrc. Isso significa que executar comandos como nvm use em qualquer subdiretório de um diretório com um arquivo .nvmrc ainda usará esse arquivo .nvmrc.

O arquivo .nvmrc deve conter uma <version> que esteja em conformidade com o que está listado em nvm --help, seguido por uma nova linha. Espaços à direita não são permitidos e uma nova linha à direita é obrigatória.

Como mostrado na imagem abaixo, não há espaço após v14.21.3, apenas uma quebra de linha.

nvmrc

Integração profunda com terminais shell ​

Você pode usar avn para integrar profundamente com seu shell e invocar automaticamente o nvm ao mudar de diretórios.

Se você preferir uma solução leve, pode usar o método abaixo.

Alternar automaticamente versões do Node.js no terminal zsh com base no arquivo .nvmrc ​

Depois de adicionar o código seguinte ao seu $HOME/.zshrc, nvm use será chamado automaticamente sempre que você entrar em um diretório contendo um arquivo .nvmrc. A string no arquivo .nvmrc informa ao nvm qual versão do Node.js usar.

bash
# Abrir diretório home e editar arquivo .zshrc
$ cd
$ vi .zshrc

Este é o código que precisa ser escrito no .zshrc:

bash
# Copie este segmento de código para o arquivo .zshrc
# coloque isso após a inicialização do nvm!
autoload -U add-zsh-hook
load-nvmrc() {
  local nvmrc_path="$(nvm_find_nvmrc)"

  if [ -n "$nvmrc_path" ]; then
    local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")

    if [ "$nvmrc_node_version" = "N/A" ]; then
      nvm install
    elif [ "$nvmrc_node_version" != "$(nvm version)" ]; then
      nvm use
    fi
  elif [ -n "$(PWD=$OLDPWD nvm_find_nvmrc)" ] && [ "$(nvm version)" != "$(nvm version default)" ]; then
    echo "Reverting to nvm default version"
    nvm use default
  fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc

Depois de editar o arquivo .zshrc, execute source .zshrc para fazer o comando ter efeito:

bash
$ source ~/.zshrc

Em projetos com um arquivo .nvmrc, quando você abre o terminal integrado no vscode, você descobrirá que nvm use é executado automaticamente, com a saída correspondente na linha de comando.

nvmrc

Construído com VitePress