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