Introdução
Sobre
Instalando e atualizando
Notas Adicionais
Solução de problemas no Linux
Solução de problemas no macOS
Ansible
Instalar e atualizar script
Verifique a instalação
Notas importantes
Instalação do Git
Instalação manual
Atualização manual
Uso
Chamar nvm use
automaticamente em um diretório com um arquivo .nvmrc
festa
zsh
peixe
Passar cabeçalho de autorização para espelhar
Persistindo cores personalizadas
Suprimindo saída colorida
Suporte de longo prazo
Migrando pacotes globais durante a instalação
Pacotes globais padrão do arquivo durante a instalação
io.js
Versão do sistema do nó
Listando versões
Configurando cores personalizadas
Restaurando PATH
Definir versão padrão do nó
Use um espelho de binários de nós
.nvmrc
Integração mais profunda do Shell
Executando testes
Variáveis de ambiente
Conclusão do Bash
Uso
Problemas de compatibilidade
Instalando nvm no Alpine Linux
Alpino Linux 3.13+
Alpino Linux 3.5 - 3.12
Desinstalando / Remoção
Desinstalação manual
Docker para ambiente de desenvolvimento
Problemas
Solução de problemas do macOS
Solução de problemas WSL
Mantenedores
Apoio ao Projeto
Suporte Empresarial
Licença
Aviso de direitos autorais
nvm
permite que você instale e use rapidamente diferentes versões do node por meio da linha de comando.
Exemplo:
$ nvm usar 16 Agora usando o nó v16.9.1 (npm v7.21.1) $ nó -v v16.9.1 $ nvm usar 14 Agora usando o nó v14.18.0 (npm v6.14.15) $ nó -v v14.18.0 $ nvm instalar 12 Agora usando o nó v12.22.6 (npm v6.14.5) $ nó -v v12.22.6
Simples assim!
nvm é um gerenciador de versão para node.js, projetado para ser instalado por usuário e invocado por shell. nvm
funciona em qualquer shell compatível com POSIX (sh, dash, ksh, zsh, bash), em particular nestas plataformas: unix, macOS e Windows WSL.
Para instalar ou atualizar o nvm, você deve executar o script de instalação. Para fazer isso, você pode baixar e executar o script manualmente ou usar o seguinte comando cURL ou Wget:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | festa
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | festa
A execução de qualquer um dos comandos acima baixa um script e o executa. O script clona o repositório nvm para ~/.nvm
e tenta adicionar as linhas de origem do trecho abaixo ao arquivo de perfil correto ( ~/.bash_profile
, ~/.zshrc
, ~/.profile
ou ~/.bashrc
) .
exportar 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" # Isso carrega o nvm
Se a variável de ambiente $XDG_CONFIG_HOME
estiver presente, ela colocará os arquivos nvm
lá.
Você pode adicionar --no-use
ao final do script acima (... nvm.sh --no-use
) para adiar o uso nvm
até use
lo manualmente.
É possível customizar a origem de instalação, o diretório, o perfil e a versão usando as variáveis NVM_SOURCE
, NVM_DIR
, PROFILE
e NODE_VERSION
. Ex: curl ... | NVM_DIR="path/to/nvm"
. Certifique-se de que NVM_DIR
não contenha uma barra final.
O instalador pode usar git
, curl
ou wget
para baixar nvm
, o que estiver disponível.
Você pode instruir o instalador a não editar a configuração do seu shell (por exemplo, se você já obtiver conclusões por meio de um plug-in zsh nvm) definindo PROFILE=/dev/null
antes de executar o script install.sh
. Aqui está um exemplo de comando de uma linha para fazer isso: PROFILE=/dev/null bash -c 'curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash'
No Linux, após executar o script de instalação, se você obtiver nvm: command not found
ou não receber feedback do seu terminal após digitar command -v nvm
, simplesmente feche o terminal atual, abra um novo terminal e tente verificar novamente. Alternativamente, você pode executar os seguintes comandos para os diferentes shells na linha de comando:
bash : source ~/.bashrc
zsh : source ~/.zshrc
ksh : . ~/.profile
Eles devem pegar o comando nvm
.
Desde o OS X 10.9, /usr/bin/git
foi predefinido pelas ferramentas de linha de comando do Xcode, o que significa que não podemos detectar corretamente se o Git está instalado ou não. Você precisa instalar manualmente as ferramentas de linha de comando do Xcode antes de executar o script de instalação, caso contrário, ele falhará. (ver #1782)
Se você obtiver nvm: command not found
após executar o script de instalação, um dos seguintes pode ser o motivo:
Desde o macOS 10.15, o shell padrão é zsh
e o nvm procurará .zshrc
para atualizar, nenhum é instalado por padrão. Crie um com touch ~/.zshrc
e execute o script de instalação novamente.
Se você usar o bash, o shell padrão anterior, seu sistema pode não ter arquivos .bash_profile
ou .bashrc
onde o comando está configurado. Crie um deles com touch ~/.bash_profile
ou touch ~/.bashrc
e execute o script de instalação novamente. Então, corra . ~/.bash_profile
ou . ~/.bashrc
para pegar o comando nvm
.
Você já usou bash
, mas tem zsh
instalado. Você precisa adicionar manualmente essas linhas a ~/.zshrc
e executar . ~/.zshrc
.
Talvez seja necessário reiniciar a instância do terminal ou executar . ~/.nvm/nvm.sh
. Reiniciar seu terminal/abrir uma nova aba/janela ou executar o comando source carregará o comando e a nova configuração.
Se o procedimento acima não ajudar, talvez seja necessário reiniciar a instância do terminal. Tente abrir uma nova aba/janela em seu terminal e tente novamente.
Se o procedimento acima não resolver o problema, você pode tentar o seguinte:
Se você usar o bash, pode ser que o seu .bash_profile
(ou ~/.profile
) não forneça o seu ~/.bashrc
corretamente. Você pode corrigir isso adicionando source ~/<your_profile_file>
a ele ou seguindo a próxima etapa abaixo.
Tente adicionar o trecho da seção de instalação, que encontra o diretório nvm correto e carrega o nvm, ao seu perfil habitual ( ~/.bash_profile
, ~/.zshrc
, ~/.profile
ou ~/.bashrc
).
Para obter mais informações sobre esse problema e possíveis soluções alternativas, consulte aqui
Nota Para Macs com o chip Apple Silicon, o node começou a oferecer pacotes arm64 arch Darwin desde a v16.0.0 e suporte experimental ao arm64 ao compilar a partir do código-fonte desde a v14.17.0. Se você estiver enfrentando problemas ao instalar o nó usando nvm
, convém atualizar para uma dessas versões ou posterior.
Você pode usar uma tarefa:
- nome: Instale nvm ansible.builtin.shell: > curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash args: cria: "{{ ansible_env.HOME }}/.nvm/nvm.sh"
Para verificar se o nvm foi instalado, faça:
comando -v nvm
que deve gerar nvm
se a instalação for bem-sucedida. Observe que which nvm
não funcionará, pois nvm
é uma função shell de origem, não um binário executável.
Nota: No Linux, após executar o script de instalação, se você obtiver nvm: command not found
ou não receber nenhum feedback do seu terminal após digitar command -v nvm
, simplesmente feche o terminal atual, abra um novo terminal e tente verificar novamente.
Se você estiver executando um sistema sem binário pré-empacotado disponível, o que significa que irá instalar o node ou io.js a partir de seu código-fonte, você precisa ter certeza de que seu sistema possui um compilador C++. Para OS X, o Xcode funcionará, para GNU/Linux baseado em Debian/Ubuntu, os pacotes build-essential
e libssl-dev
funcionam.
Nota: nvm
também oferece suporte ao Windows em alguns casos. Deve funcionar através de WSL (Windows Subsystem for Linux) dependendo da versão do WSL. Também deve funcionar com GitBash (MSYS) ou Cygwin. Caso contrário, para Windows existem algumas alternativas, que não são suportadas nem desenvolvidas por nós:
janelas nvm
nodista
nvs
Nota: nvm
também não suporta Fish (veja #303). Existem alternativas que não são apoiadas nem desenvolvidas por nós:
bass permite que você use utilitários escritos para Bash em fish shell
fast-nvm-fish funciona apenas com números de versão (não aliases), mas não retarda significativamente a inicialização do shell
plugin-nvm plugin para Oh My Fish, que disponibiliza o nvm e seus complementos no fish shell
fnm - gerenciador de versão baseado em pescador para peixes
fish-nvm - Wrapper nvm para peixes, atrasa o fornecimento de nvm até que seja realmente usado.
Nota: Ainda temos alguns problemas com o FreeBSD, porque não existe um binário oficial pré-construído para o FreeBSD, e compilar a partir do código-fonte pode precisar de patches; veja o ticket de emissão:
[#900] O nó [Bug] no FreeBSD pode precisar ser corrigido
nodejs/node#3716
Nota: No OS X, se você não tiver o Xcode instalado e não desejar baixar o arquivo de aproximadamente 4,3 GB, poderá instalar as Command Line Tools
. Você pode conferir esta postagem do blog sobre como fazer exatamente isso:
Como instalar ferramentas de linha de comando no OS X Mavericks e Yosemite (sem Xcode)
Nota: No OS X, se você tiver/tiver um nó de "sistema" instalado e quiser instalar módulos globalmente, lembre-se de que:
Ao usar nvm
você não precisa sudo
para instalar globalmente um módulo com npm -g
, então, em vez de fazer sudo npm install -g grunt
, faça npm install -g grunt
Se você tiver um arquivo ~/.npmrc
, certifique-se de que ele não contenha nenhuma configuração prefix
(que não é compatível com nvm
)
Você pode (mas não deve?) Manter a instalação do nó do "sistema" anterior, mas nvm
estará disponível apenas para sua conta de usuário (aquela usada para instalar o nvm). Isso pode causar incompatibilidades de versão, pois outros usuários usarão /usr/local/lib/node_modules/*
VS sua conta de usuário usando ~/.nvm/versions/node/vX.XX/lib/node_modules/*
A instalação do Homebrew não é suportada. Se você tiver problemas com nvm
instalado pelo homebrew, brew uninstall
o e instale-o usando as instruções abaixo, antes de registrar um problema.
Nota: Se estiver usando zsh
você pode instalar facilmente nvm
como um plugin zsh. Instale zsh-nvm
e execute nvm upgrade
para atualizar.
Nota: As versões do Git anteriores à v1.7 podem enfrentar um problema de clonagem da fonte nvm
do GitHub via protocolo https, e também há um comportamento diferente do git antes da v1.6, e do git anterior à v1.17.10 não pode clonar tags, portanto, o mínimo a versão git necessária é v1.7.10. Se você estiver interessado no problema mencionado aqui, consulte o artigo sobre erros de clonagem de HTTPS do GitHub.
Se você tiver git
instalado (requer git v1.7.10+):
clone este repositório na raiz do seu perfil de usuário
cd ~/
de qualquer lugar, então git clone https://github.com/nvm-sh/nvm.git .nvm
cd ~/.nvm
e confira a versão mais recente com git checkout v0.40.1
ative nvm
obtendo-o do seu shell: . ./nvm.sh
Agora adicione essas linhas ao seu arquivo ~/.bashrc
, ~/.profile
ou ~/.zshrc
para que ele seja fornecido automaticamente no login: (talvez seja necessário adicionar mais de um dos arquivos acima)
exportar NVM_DIR="$HOME/.nvm"[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # Isso carrega nvm[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" # Isso carrega nvm bash_completion
Para uma instalação totalmente manual, execute as seguintes linhas para primeiro clonar o repositório nvm
em $HOME/.nvm
e depois carregar nvm
:
exportar NVM_DIR="$HOME/.nvm" && ( clone git https://github.com/nvm-sh/nvm.git "$NVM_DIR" cd "$NVM_DIR" git checkout `git description --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`) && . "$NVM_DIR/nvm.sh"
Agora adicione essas linhas ao seu arquivo ~/.bashrc
, ~/.profile
ou ~/.zshrc
para que ele seja fornecido automaticamente no login: (talvez seja necessário adicionar mais de um dos arquivos acima)
exportar NVM_DIR="$HOME/.nvm"[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # Isso carrega nvm[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" # Isso carrega nvm bash_completion
Para atualização manual com git
(requer git v1.7.10+):
mude para $NVM_DIR
puxar para baixo as últimas alterações
confira a versão mais recente
ativar a nova versão
( cd "$NVM_DIR" git fetch --tags origem git checkout `git description --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`) && . "$NVM_DIR/nvm.sh"
Para baixar, compilar e instalar a versão mais recente do nó, faça o seguinte:
nvm install node # "node" é um alias para a versão mais recente
Para instalar uma versão específica do nó:
nvm install 14.7.0 # ou 16.3.0, 12.22.1, etc.
Para definir um alias:
nvm alias meu_alias v14.4.0
Certifique-se de que seu alias não contenha espaços ou barras.
A primeira versão instalada torna-se a padrão. Novos shells começarão com a versão padrão do node (por exemplo, nvm alias default
).
Você pode listar as versões disponíveis usando ls-remote
:
nvm ls-remoto
E então em qualquer novo shell basta usar a versão instalada:
nó de uso nvm
Ou você pode simplesmente executá-lo:
nó de execução nvm --versão
Ou você pode executar qualquer comando arbitrário em um subshell com a versão desejada do nó:
nó nvm exec 4.2 --versão
Você também pode obter o caminho do executável onde ele foi instalado:
nvm que 12.22
No lugar de um ponteiro de versão como "14.7" ou "16.3" ou "12.22.1", você pode usar os seguintes aliases padrão especiais com nvm install
, nvm use
, nvm run
, nvm exec
, nvm which
, etc:
node
: isso instala a versão mais recente do node
iojs
: instala a versão mais recente do io.js
stable
: este alias está obsoleto e só se aplica verdadeiramente ao node
v0.12
e anteriores. Atualmente, este é um alias para node
.
unstable
: este alias aponta para node
v0.11
- a última versão do nó "instável", desde pós-1.0, todas as versões do nó são estáveis. (no SemVer, as versões comunicam quebra, não estabilidade).
O nó tem um cronograma para suporte de longo prazo (LTS). Você pode fazer referência a versões LTS em aliases e arquivos .nvmrc
com a notação lts/*
para o LTS mais recente e lts/argon
para versões LTS da linha "argon", por exemplo . Além disso, os seguintes comandos suportam argumentos LTS:
nvm install --lts
/ nvm install --lts=argon
/ nvm install 'lts/*'
/ nvm install lts/argon
nvm uninstall --lts
/ nvm uninstall --lts=argon
/ nvm uninstall 'lts/*'
/ nvm uninstall lts/argon
nvm use --lts
/ nvm use --lts=argon
/ nvm use 'lts/*'
/ nvm use lts/argon
nvm exec --lts
/ nvm exec --lts=argon
/ nvm exec 'lts/*'
/ nvm exec lts/argon
nvm run --lts
/ nvm run --lts=argon
/ nvm run 'lts/*'
/ nvm run lts/argon
nvm ls-remote --lts
/ nvm ls-remote --lts=argon
nvm ls-remote 'lts/*'
/ nvm ls-remote lts/argon
nvm version-remote --lts
/ nvm version-remote --lts=argon
/ nvm version-remote 'lts/*'
/ nvm version-remote lts/argon
Sempre que sua cópia local do nvm
se conectar a https://nodejs.org, ela recriará os aliases locais apropriados para todas as linhas LTS disponíveis. Esses aliases (armazenados em $NVM_DIR/alias/lts
) são gerenciados por nvm
e você não deve modificar, remover ou criar esses arquivos - espere que suas alterações sejam desfeitas e que a interferência nesses arquivos cause bugs que provavelmente ocorrerão não ser suportado.
Para obter a versão LTS mais recente do node e migrar seus pacotes instalados existentes, use
nvm install --reinstall-packages-from=atual 'lts/*'
Se você deseja instalar uma nova versão do Node.js e migrar pacotes npm de uma versão anterior:
nvm install --reinstall-packages-from=nó nó
Isso primeiro usará "nó de versão nvm" para identificar a versão atual da qual você está migrando pacotes. Em seguida, ele resolve a nova versão para instalar a partir do servidor remoto e a instala. Por último, ele executa "nvm reinstall-packages" para reinstalar os pacotes npm da sua versão anterior do Node para a nova.
Você também pode instalar e migrar pacotes npm de versões específicas do Node assim:
nvm install --reinstall-packages-from=5 6 nvm install --reinstall-packages-from=iojs v4.2
Observe que reinstalar pacotes explicitamente não atualiza a versão do npm — isso é para garantir que o npm não seja atualizado acidentalmente para uma versão quebrada da nova versão do nó.
Para atualizar o npm ao mesmo tempo, adicione o sinalizador --latest-npm
, assim:
nvm install --reinstall-packages-from=default --latest-npm 'lts/*'
ou você pode a qualquer momento executar o seguinte comando para obter a versão npm suportada mais recente na versão atual do nó:
nvm instalar-mais recente-npm
Se você já recebeu um erro no sentido de "npm não suporta Node.js", você precisará (1) reverter para uma versão anterior do nó ( nvm ls
& nvm use <your latest _working_ version from the ls>
), (2) exclua a versão do nó recém-criada ( nvm uninstall <your _broken_ version of node from the ls>
) e (3) execute novamente nvm install
com o --latest-npm
bandeira.
Se você tiver uma lista de pacotes padrão que deseja instalar sempre que instalar uma nova versão, nós também oferecemos suporte - basta adicionar os nomes dos pacotes, um por linha, ao arquivo $NVM_DIR/default-packages
. Você pode adicionar qualquer coisa que o npm aceitaria como argumento de pacote na linha de comando.
# $NVM_DIR/default-packagesrimraf [email protected] stevemao/almofada esquerda
Se você deseja instalar o io.js:
nvm instalar iojs
Se você deseja instalar uma nova versão do io.js e migrar pacotes npm de uma versão anterior:
nvm install --reinstall-packages-from=iojs iojs
As mesmas diretrizes mencionadas para a migração de pacotes npm no node são aplicáveis ao io.js.
Se quiser usar a versão do node instalada pelo sistema, você pode usar o alias padrão especial "system":
sistema de uso nvm sistema de execução nvm --versão
Se você quiser ver quais versões estão instaladas:
nvmls
Se você quiser ver quais versões estão disponíveis para instalação:
nvm ls-remoto
Você pode definir cinco cores que serão usadas para exibir informações de versão e alias. Essas cores substituem as cores padrão. As cores iniciais são: gbyre
Códigos de cores:
r/R = red / bold red g/G = green / bold green b/B = blue / bold blue c/C = cyan / bold cyan m/M = magenta / bold magenta y/Y = yellow / bold yellow k/K = black / bold black e/W = light grey / white
nvm definir cores rgBcm
Se desejar que as cores personalizadas persistam após encerrar o shell, exporte a variável NVM_COLORS
em seu perfil de shell. Por exemplo, se quiser usar ciano, magenta, verde, vermelho em negrito e amarelo em negrito, adicione a seguinte linha:
exportar NVM_COLORS='cmgRY'
nvm help (or -h or --help)
, nvm ls
, nvm ls-remote
e nvm alias
geralmente produzem saída colorida. Você pode desativar as cores com a opção --no-colors
(ou definindo a variável de ambiente TERM=dumb
):
nvm ls --sem cores ajuda do nvm --sem cores TERM = mudo nvm ls
Para restaurar seu PATH, você pode desativá-lo:
nvm desativar
Para definir uma versão padrão do Node a ser usada em qualquer novo shell, use o alias 'default':
nvm alias default node # refere-se à versão instalada mais recente do nodenvm alias default 18 # refere-se à versão v18.x instalada mais recente do nodenvm alias default 18.12 # refere-se à versão v18.12.x instalada mais recente do node
Para usar um espelho dos binários do nó, defina $NVM_NODEJS_ORG_MIRROR
:
exportar NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist nó de instalação nvm NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist instalação nvm 4.2
Para usar um espelho dos binários io.js, defina $NVM_IOJS_ORG_MIRROR
:
exportar NVM_IOJS_ORG_MIRROR=https://iojs.org/dist nvm instalar iojs-v1.0.3 NVM_IOJS_ORG_MIRROR=https://iojs.org/dist nvm instalar iojs-v1.0.3
nvm use
não criará, por padrão, um link simbólico "atual". Defina $NVM_SYMLINK_CURRENT
como "true" para ativar esse comportamento, que às vezes é útil para IDEs. Observe que usar nvm
em várias guias do shell com esta variável de ambiente habilitada pode causar condições de corrida.
Para passar um cabeçalho de autorização para o URL espelho, defina $NVM_AUTH_HEADER
NVM_AUTH_HEADER="Bearer secret-token" nó de instalação nvm
Você pode criar um arquivo .nvmrc
contendo um número de versão do nó (ou qualquer outra string que nvm
entenda; consulte nvm --help
para obter detalhes) no diretório raiz do projeto (ou em qualquer diretório pai). Posteriormente, nvm use
, nvm install
, nvm exec
, nvm run
e nvm which
usarão a versão especificada no arquivo .nvmrc
se nenhuma versão for fornecida na linha de comando.
Por exemplo, para tornar o nvm padrão para a versão 5.9 mais recente, a versão LTS mais recente ou a versão mais recente do nó para o diretório atual:
$ echo "5.9" > .nvmrc $ echo "lts/*" > .nvmrc # para padrão para a versão LTS mais recente$ echo "node" > .nvmrc # para padrão para a versão mais recente
[NB, estes exemplos assumem uma versão shell compatível com POSIX de echo
. Se você usar um ambiente de desenvolvimento cmd
do Windows, por exemplo, o arquivo .nvmrc
é usado para configurar uma implantação remota do Linux, lembre-se de que os "
s serão copiados, levando a um arquivo inválido. Remova-os.]
Então, quando você executar o nvm, use:
$ uso nvm Encontrado '/path/to/project/.nvmrc' com versão <5.9> Agora usando o nó v5.9.1 (npm v3.7.3)
Executar nvm install também mudará para a versão correta, mas se a versão correta do nó ainda não estiver instalada, ele a instalará para você.
$ nvm instalar Encontrado '/path/to/project/.nvmrc' com versão <5.9> Baixando e instalando o nó v5.9.1... Baixando https://nodejs.org/dist/v5.9.1/node-v5.9.1-linux-x64.tar.xz...########### ################################################# ####################### 100,0% Calculando soma de verificação com sha256sum Somas de verificação correspondidas! Agora usando o nó v5.9.1 (npm v3.7.3)
nvm use
et. al. percorrerá a estrutura de diretórios para cima a partir do diretório atual procurando o arquivo .nvmrc
. Em outras palavras, executar nvm use
et. al. em qualquer subdiretório de um diretório com um .nvmrc
resultará na utilização desse .nvmrc
.
O conteúdo de um arquivo .nvmrc
deve conter exatamente um <version>
(conforme descrito por nvm --help
) seguido por uma nova linha. Os arquivos .nvmrc
também podem ter comentários. O delimitador de comentário é #
, e ele e qualquer texto depois dele, bem como linhas em branco e espaços em branco à esquerda e à direita, serão ignorados durante a análise.
Pares chave/valor usando =
também são permitidos e ignorados, mas são reservados para uso futuro e podem causar erros de validação no futuro.
Execute npx nvmrc
para validar um arquivo .nvmrc
. Se os resultados dessa ferramenta não concordarem com o nvm, um ou outro tem um bug - registre um problema.
Você pode usar avn
para integrar-se profundamente ao seu shell e invocar automaticamente nvm
ao alterar os diretórios. avn
não é suportado pelos mantenedores nvm
. Por favor, relate problemas à equipe avn
.
Você também pode usar nvshim
para corrigir os compartimentos node
, npm
e npx
para usar automaticamente a configuração nvm
no diretório atual. nvshim
não é suportado pelos mantenedores nvm
. Por favor, relate problemas à equipe nvshim
.
Se você preferir uma solução mais leve, as receitas abaixo foram contribuídas por usuários nvm
. Eles não são suportados pelos mantenedores nvm
. No entanto, estamos aceitando solicitações pull para mais exemplos.
nvm use
automaticamente em um diretório com um arquivo .nvmrc
No seu perfil ( ~/.bash_profile
, ~/.zshrc
, ~/.profile
ou ~/.bashrc
), adicione o seguinte para nvm use
sempre que você inserir um novo diretório:
Coloque o seguinte no final do seu $HOME/.bashrc
:
cdnvm() { comando cd "$@" || devolver $? nvm_path="$(nvm_find_up .nvmrc | command tr -d 'n')" # Se não houver arquivo .nvmrc, use a versão nvm padrão se [[ ! $nvm_path = *[^[:espaço:]]* ]]; então declare default_version default_version="$(nvm version default)" # Se não houver uma versão padrão, defina-a como `node` # Isso usará a versão mais recente em sua máquina if [ $default_version = 'N/A' ]; então nó padrão do alias nvm default_version=$(nvm version default) fi # Se a versão atual não for a versão padrão, configure-a para usar a versão padrão if [ "$(nvm current)" != "${default_version}" ]; então nvm usa fi elif padrão [[ -s "${nvm_path}/.nvmrc" && -r "${nvm_path}/.nvmrc" ]]; então declare nvm_version nvm_version=$(<"${nvm_path}"/.nvmrc) declare locally_resolved_nvm_version # `nvm ls` verificará todas as versões disponíveis localmente # Se houver várias versões correspondentes, escolha a mais recente # Remova `->` e ` *` caracteres e espaços # `locally_resolved_nvm_version` será `N/A` se nenhuma versão local for encontrada locally_resolved_nvm_version=$(nvm ls --no-colors "${nvm_version}" | command tail -1 | command tr -d '->*' | command tr -d '[:space:]') # Se for ainda não instalado, instale-o # `nvm install` usará implicitamente a versão recém-instalada se [ "${locally_resolved_nvm_version}" = 'N/A' ]; então instalação nvm "${nvm_version}"; elif [ "$(nvm atual)" != "${locally_resolved_nvm_version}" ]; então nvm use "${nvm_version}"; fi fi}alias cd='cdnvm'cdnvm "$PWD" || saída
Este alias pesquisaria 'up' em seu diretório atual para detectar um arquivo .nvmrc
. Se encontrar, ele mudará para essa versão; caso contrário, usará a versão padrão.
Esta função shell será instalada (se necessário) e nvm use
a versão especificada do Node quando um .nvmrc
for encontrado, e nvm use default
caso contrário.
Coloque isso em seu $HOME/.zshrc
para chamar nvm use
automaticamente sempre que você inserir um diretório que contém um arquivo .nvmrc
com uma string informando ao nvm qual nó use
:
# coloque isso após a inicialização do nvm!autoload -U add-zsh-hookload-nvmrc() { local nvmrc_path nvmrc_path="$(nvm_find_nvmrc)" se [ -n "$nvmrc_path" ]; então nvmrc_node_version local nvmrc_node_version=$(versão nvm "$(cat "${nvmrc_path}")") se [ "$nvmrc_node_version" = "N/A" ]; então nvm install elif [ "$nvmrc_node_version" != "$(versão nvm)" ]; então nvm use fi elif [ -n "$(PWD=$OLDPWD nvm_find_nvmrc)" ] && [ "$(versão nvm)" != "$(versão nvm padrão)" ]; então echo "Revertendo para a versão padrão do nvm" nvm usa fi padrão} add-zsh-hook chpwd load-nvmrc carregar-nvmrc
Isso requer que você tenha o baixo instalado.
# ~/.config/fish/functions/nvm.fishfunction nvm fonte de graves ~/.nvm/nvm.sh --no-use ';' nvm $argvend# ~/.config/fish/functions/nvm_find_nvmrc.fishfunction nvm_find_nvmrc fonte de graves ~/.nvm/nvm.sh --no-use ';' nvm_find_nvmrcend# ~/.config/fish/functions/load_nvm.fishfunction load_nvm --on-variable="PWD" set -l default_node_version (versão nvm padrão) set -l node_version (versão nvm) set -l nvmrc_path (nvm_find_nvmrc) se teste -n "$nvmrc_path" conjunto -l nvmrc_node_version (versão nvm (cat $nvmrc_path)) se teste "$nvmrc_node_version" = "N/A" instalação nvm (cat $nvmrc_path) senão se testar "$nvmrc_node_version" != "$node_version" nvm use $nvmrc_node_version end else if test "$node_version" != "$default_node_version" echo "Revertendo para a versão padrão do nó" nvm use default endend# ~/.config/fish/config.fish# Você deve chamá-lo na inicialização ou ouvir a troca de diretório não funcionará_nvm > /dev/stderr
Os testes são escritos no Urchin. Instale o Urchin (e outras dependências) da seguinte forma:
npm install
Existem testes lentos e testes rápidos. Os testes lentos fazem coisas como instalar o nó e verificar se as versões corretas são usadas. Os testes rápidos falsificam isso para testar coisas como aliases e desinstalação. Na raiz do repositório nvm git, execute os testes rápidos como este:
npm run test/fast
Execute os testes lentos assim:
npm run test/slow
Execute todos os testes assim:
npm test
Nota bene: Evite executar o nvm enquanto os testes estão em execução.
nvm expõe as seguintes variáveis de ambiente:
NVM_DIR
– diretório de instalação do nvm.
NVM_BIN
- onde os pacotes node, npm e globais para a versão ativa do node estão instalados.
NVM_INC
- diretório de arquivos de inclusão do nó (útil para construir complementos C/C++ para o nó).
NVM_CD_FLAGS
– usado para manter a compatibilidade com zsh.
NVM_RC_VERSION
- versão do arquivo .nvmrc se estiver sendo usado.
Além disso, nvm modifica PATH
e, se presente, MANPATH
e NODE_PATH
ao alterar versões.
Para ativar, você precisa source bash_completion
:
[[ -r $NVM_DIR/bash_completion ]] && . $NVM_DIR/bash_completion
Coloque a linha de sourcing acima logo abaixo da linha de sourcing para nvm em seu perfil ( .bashrc
, .bash_profile
).
nvm:
Guia
$ nvm
alias desativar instalar lista remota reinstalar pacotes desinstalar versão cache exec install-latest-npm ls executar descarregar versão remota lista de ajuda atual ls-remote unalias use which
alias nvm:
Guia
$ nvm alias
padrão iojs lts/* lts/argônio lts/boro lts/carbon lts/dubnium lts/erbium nó estável instável
$ nvm alias my_alias
guia my_alias
v10.22.0 v12.18.3 v14.8.0
uso de nvm:
$ nvm use
guia
my_alias default v10.22.0 v12.18.3 v14.8.0
desinstalação do nvm:
Guia
$ nvm uninstall
my_alias default v10.22.0 v12.18.3 v14.8.0
nvm
encontrará alguns problemas se você tiver algumas configurações não padrão definidas. (veja #606) Sabe-se que os itens a seguir causam problemas:
Dentro de ~/.npmrc
:
prefix='algum/caminho'
Variáveis de ambiente:
$NPM_CONFIG_PREFIX$PREFIX
Configurações de casca:
definir -e
Para fornecer o melhor desempenho (e outras otimizações), o nvm baixará e instalará binários pré-compilados para Node (e npm) quando você executar nvm install X
. O projeto Node compila, testa e hospeda/fornece esses binários pré-compilados que são construídos para distribuições Linux convencionais/tradicionais (como Debian, Ubuntu, CentOS, RedHat et al).
Alpine Linux, ao contrário das distribuições Linux convencionais/tradicionais, é baseado no BusyBox, uma distribuição Linux muito compacta (~5 MB). O BusyBox (e, portanto, o Alpine Linux) usa uma pilha C/C++ diferente da maioria das distribuições Linux convencionais/tradicionais - musl. Isso torna os programas binários criados para esse tipo de mainstream/tradicional incompatíveis com o Alpine Linux, portanto, não podemos simplesmente nvm install X
no Alpine Linux e esperar que o binário baixado seja executado corretamente - você provavelmente verá erros "... não existe" se você tente isso.
Há um sinalizador -s
para nvm install
que solicita o download da fonte do nó do nvm e a compila localmente.
Se instalar o nvm no Alpine Linux ainda é o que você deseja ou precisa fazer, você poderá fazer isso executando o seguinte no shell do Alpine Linux, dependendo da versão que estiver usando:
apk add -U curl bash ca-certificates openssl ncurses coreutils python3 make gcc g++ libgcc linux-headers grep util-linux binutils findutils curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | festa
apk add -U curl bash ca-certificates openssl ncurses coreutils python2 make gcc g++ libgcc linux-headers grep util-linux binutils findutils curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | festa
Nota: Alpine 3.5 só pode instalar versões do NodeJS até v6.9.5, Alpine 3.6 só pode instalar versões até v6.10.3, Alpine 3.7 instala versões até v8.9.3, Alpine 3.8 instala versões até v8.14.0, Alpine 3.9 instala versões até v10.19.0, o Alpine 3.10 instala versões até v10.24.1, Alpine 3.11 instala versões até v12.22.6, Alpine 3.12 instala versões até v12.22.12, Alpine 3.13 e 3.14 instala versões até v14.20.0, Alpine 3.15 e 3.16 instala versões até v16.16.0 ( Estas são todas as versões no branch principal ). Alpine 3.5 - 3.12 exigia o pacote python2
para construir o NodeJS, pois são versões mais antigas para construir. Alpine 3.13+ requer python3
para construir versões mais recentes do NodeJS com sucesso, mas você pode usar python2
com Alpine 3.13+ se precisar construir versões de nó suportadas em Alpine 3.5 - 3.15, você só precisa especificar em qual versão do NodeJS você precisa instalar o script de instalação do pacote.
O projeto Node tem algum desejo, mas nenhum plano concreto (devido às despesas gerais de construção, testes e suporte) para oferecer binários compatíveis com Alpine.
Como alternativa potencial, @mhart (um contribuidor do Node) possui algumas imagens Docker para Alpine Linux com Node e, opcionalmente, npm, pré-instaladas.
Para remover nvm
manualmente, execute o seguinte:
Primeiro, use nvm unload
para remover o comando nvm da sua sessão de terminal e exclua o diretório de instalação:
$ nvm_dir="${NVM_DIR:-~/.nvm}"$ nvm descarregar $ rm -rf "$nvm_dir"
Edite ~/.bashrc
(ou outra configuração de recurso de shell) e remova as linhas abaixo:
exportar NVM_DIR="$HOME/.nvm"[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # Isso carrega nvm[[ -r $NVM_DIR/bash_completion ]] && . $NVM_DIR/bash_completion
Para facilitar o trabalho de desenvolvimento e teste, temos um DockerFile para o uso do desenvolvimento, baseado na imagem base do Ubuntu 18.04, preparado com ferramentas essenciais e úteis para o desenvolvimento nvm
, para construir a imagem do docker do ambiente, execute o comando Docker em A raiz do repositório nvm
:
$ Docker Build -t NVM -Dev.
Isso empacotará seu repositório NVM atual com nosso ambiente de desenvolvimento predefinido em uma imagem do docker chamada nvm-dev
, uma vez que for construída com sucesso, validar sua imagem por meio de docker images
:
$ Docker Images ID da imagem da tag repositório Tamanho criado NVM-DEV mais recente 9CA4C57A97D8 7 dias atrás 650 MB
Se você não tem nenhuma mensagem de erro, agora pode se envolver facilmente em:
$ docker run -h nvm -dev -it nvm -dev nvm@nvm-dev: ~/.nvm $
Observe que levará cerca de 8 minutos para construir a imagem e o tamanho da imagem seria de cerca de 650 MB, para que não seja adequado para o uso da produção.
Para obter mais informações e documentação sobre o Docker, consulte o site oficial:
https://www.docker.com/
https://docs.docker.com/
Se você tentar instalar uma versão do nó e a instalação falhar, não deixe de executar nvm cache clear
para excluir downloads de nó em cache, ou você poderá obter um erro como o seguinte:
Curl: (33) O servidor HTTP não parece suportar intervalos de bytes. Não pode retomar.
Onde está meu sudo node
? Confira #43
Após a versão v0.8.6 do nó, o NVM tenta instalar a partir de pacotes binários. Mas em alguns sistemas, os pacotes binários oficiais não funcionam devido à incompatibilidade de LIBs compartilhados. Nesses casos, use -s
opção para forçar a instalação da fonte:
NVM Instale -S 0,8,6
Se definir o alias default
não estabelecer a versão do nó em novos shells (ou seja, system
de rendimentos nvm current
), verifique se o PATH
do nó do sistema é definido antes da linha de origem nvm.sh
no seu perfil de shell (consulte #658)
Versão do nó nvm não encontrada no shell vim
Se você definir a versão do nó como uma versão que não seja a versão do seu sistema nvm use 6.2.1
e abra o vim e execute :!node -v
verá v6.2.1
se você ver a versão do sistema v0.12.7
. Você precisa correr:
sudo chmod ugo-x/usr/libexec/path_helper
Mais sobre esse assunto em Dotphiles/Dotzsh.
NVM não é compatível com a opção "Prefixo" da configuração NPM
Algumas soluções para este problema podem ser encontradas aqui
Há mais um caso de borda que está causando esse problema, e isso é uma incompatibilidade entre o caminho para $HOME
e o nome real do diretório inicial do usuário .
Você deve garantir que o nome do diretório do usuário em $HOME
e o nome do diretório do usuário que você veria na execução ls /Users/
estejam capitalizados da mesma maneira (consulte este problema).
Para alterar o diretório do usuário e/ou o nome da conta, siga as instruções aqui
Homebrew torna os diretórios do ZSH não seguros
ZSH Compinit: Diretórios inseguros, execute o Compaudit for List. Ignore diretórios inseguros e continue [y] ou abortam compinitar [n]? sim
O homebrew causa diretórios inseguros como /usr/local/share/zsh/site-functions
e /usr/local/share/zsh
. Este não é um problema nvm
- é um problema de homebrew. Consulte aqui algumas soluções relacionadas ao problema.
Macs com chips de silício de maçã
O suporte experimental para a arquitetura de chip de silício da Apple foi adicionado no Node.JS v15.3 e o suporte total foi adicionado no V16.0. Por esse motivo, se você tentar instalar versões mais antigas do nó, como de costume, provavelmente experimentará erros de compilação ao instalar erros de nó ou fora da memória durante a execução do seu código.
Portanto, se você deseja executar uma versão antes da v16.0 em um Mac Apple Silicon, pode ser melhor compilar o nó direcionado para a arquitetura Intel x86_64
para que o Rosetta 2 possa traduzir as instruções do processador x86_64
para instruções de silício de maçã baseadas em ARM. Aqui está o que você precisará fazer:
Instale Rosetta, se você ainda não o fez
$ softwareUpdate-Install-Rosetta
Você pode se perguntar: "Como meu Apple Silicon Mac saberá usar Rosetta para uma versão do Node Compiled para um chip Intel?". Se um executável contiver apenas instruções Intel, o MacOS usará automaticamente o Rosetta para traduzir as instruções.
Abra uma concha que está em execução usando Rosetta
$ arch -x86_64 zsh
NOTA: Essa mesma coisa também pode ser realizada encontrando o aplicativo Terminal ou Iterm no Finder, clicando com o botão direito do lado, selecionando "Get Info" e verificando a caixa rotulada como "Open Uso Rosetta".
NOTA: Esta sessão de terminal agora está em execução no zsh
. Se zsh
não for o shell que você normalmente usa, nvm
pode não ser source
'D automaticamente, como provavelmente é para o seu shell habitual através de seus Dotfiles. Se for esse o caso, certifique -se de obter nvm
.
$ fonte "$ {nvm_dir} /nvm.sh"
Instale qualquer versão mais antiga do nó em que você esteja interessado. Vamos usar 12.22.1 como exemplo. Isso buscará o código -fonte do nó e o compilará, que levará vários minutos.
$ nvm install v12.22.1-compartilhado-zlib
Nota: Você provavelmente está curioso para saber por que --shared-zlib
está incluído. Há um bug nas versões recentes do System clang
Compiler da Apple. Se uma dessas versões quebradas estiver instalada no seu sistema, a etapa acima provavelmente será bem-sucedida, mesmo que você não incluísse o sinalizador --shared-zlib
. No entanto, mais tarde, quando você tenta o npm install
algo usando sua versão antiga do Node.js, verá erros incorrect data check
. Se você deseja evitar o possível incômodo de lidar com isso, inclua essa bandeira. Para mais detalhes, consulte esta questão e este comentário
Saia de volta à sua concha nativa.
$ saída $ arch ARM64
NOTA: Se você selecionou a caixa rotulada como "Open usando o Rosetta" em vez de executar o comando da CLI na segunda etapa, verá i386
aqui. A menos que você tenha outro motivo para selecionar essa caixa, você pode desmarcá -la agora.
Verifique se a arquitetura está correta. x64
é a abreviação para x86_64
, que é o que você deseja ver.
$ node -p process.arch x64
Agora você deve poder usar o nó como de costume.
Se você encontrou esse erro no WSL-2:
Curl -o- https://raw.githubusercontent.com/nvm-h/nvm/v0.40.1/install.sh | festa % % % % Recebidos % xferd de velocidade média de tempo de tempo de tempo Upload dargo 0 0 0 0 0 0 0 0-:-:-0:00:09-:-:-0CURL: (6) Não foi possível resolver o host: raw.githubusercontent.com
Pode ser devido ao seu antivírus, VPN ou outros motivos.
Onde você pode ping 8.8.8.8
enquanto não pode ping google.com
Isso pode ser simplesmente resolvido executando isso no seu diretório raiz:
sudo rm /etc/resolv.conf SUDO BASH -C 'ECHO "NAMEVERVER 8.8.8.8"> /etc/resolv.conf'sudo Bash -C' eCHO "[Network]"> /etc/wsl.conf'sudo Bash -C 'Echo "GeraterSolvconf = false" >> /etc/wsl.conf'sudo chattr +i /etc/resolv.conf
Isso exclui seu arquivo resolv.conf
que é gerado automaticamente quando você executa o WSL, cria um novo arquivo e coloca nameserver 8.8.8.8
, depois cria um arquivo wsl.conf
e adiciona [network]
e generateResolveConf = false
para impedir a auto-geração daquela arquivo.
Você pode verificar o conteúdo do arquivo em execução:
cat /etc/resolv.conf
Atualmente, o único mantenedor é @ljharb - mais mantenedores são bem -vindos e esperamos adicionar pessoas à equipe ao longo do tempo. A governança será reavaliada à medida que o projeto evoluir.
Somente a versão mais recente (v0.40.1 neste momento) é suportada.
Se você não conseguir atualizar para a versão mais recente do nvm
, nossos parceiros fornecem correções de segurança comercial para todas as versões não suportadas:
Herodevs sem fim de apoio
Veja License.md.
Copyrighright OpenJS Foundation e nvm
colaboradores. Todos os direitos reservados. A Fundação OpenJS registrou marcas comerciais e usa marcas comerciais. Para obter uma lista de marcas comerciais da Fundação OpenJS, consulte nossa lista de Políticas e Marcas Registradas. O Node.js é uma marca registrada da Joyent, Inc. e é usada com sua permissão. Marcas comerciais e logotipos não indicados na lista de marcas comerciais da OpenJS Foundation são marcas comerciais ou marcas registradas de seus respectivos detentores. O uso deles não implica nenhuma afiliação ou endosso por eles.
A Fundação OpenJS | Termos de Uso | Política de Privacidade | Estatuto da Fundação OpenJS | Política de marca registrada | Lista de marcas comerciais | Política de Cookies