n
– Gerencie interativamente suas versões do Node.jsGerenciamento de versão Node.js: sem subshells, sem configuração de perfil, sem API complicada, apenas .
n
– Gerencie interativamente suas versões do Node.js n
é compatível com macOS, Linux, inclusive com Windows Subsystem para Linux e vários outros sistemas semelhantes a Unix. Ele foi escrito como um script BASH, mas não exige que você use o BASH como seu shell de comando.
n
não funciona em shells nativos no Microsoft Windows (como PowerShell), ou Git para Windows BASH, ou com a DLL Cygwin.
Se você já possui o Node.js instalado, uma maneira fácil de instalar n
é usando npm
:
npm install -g n
O local raiz padrão usado ao executar n
é /usr/local
onde um usuário normal não tem permissão de gravação. Você pode encontrar o mesmo tipo de erro de permissão ao usar o npm para instalar módulos globais, como o comando acima. Você tem três opções principais:
n
para usar um local personalizado onde você tenha permissões de gravação (consulte N_PREFIX
)sudo
na frente do comando para executá-lo como superusuário n
armazena em cache as versões do Node.js no subdiretório n/versions
. A versão ativa do Node.js é instalada nos subdiretórios bin
, include
, lib
e share
.
Para apropriar-se dos diretórios do sistema (opção 1):
# make cache folder (if missing) and take ownership
sudo mkdir -p /usr/local/n
sudo chown -R $(whoami) /usr/local/n
# make sure the required folders exist (safe to execute even if they already exist)
sudo mkdir -p /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share
# take ownership of Node.js install destination folders
sudo chown -R $(whoami) /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share
Se npm
ainda não estiver disponível, uma maneira de inicializar uma instalação é baixar e executar n
diretamente. Para instalar a versão lts
do Node.js:
curl -fsSL https://raw.githubusercontent.com/tj/n/master/bin/n | bash -s install lts
# If you want n installed, you can use npm now.
npm install -g n
Se você não precisa de suporte para atualizações do próprio n
, basta salvar o download:
curl -fsSL -o /usr/local/bin/n https://raw.githubusercontent.com/tj/n/master/bin/n
chmod 0755 /usr/local/bin/n
n install lts
No macOS com Homebrew você pode instalar a fórmula n.
brew install n
Ou no macOS com MacPorts você pode instalar a porta n:
port install n
No Linux e no macOS, o n-install permite a instalação diretamente do GitHub; por exemplo:
curl -L https://bit.ly/n-install | bash
n-install define PREFIX
e N_PREFIX
como $HOME/n
, instala n
em $HOME/n/bin
, modifica os arquivos de inicialização dos shells suportados para exportar N_PREFIX
e adicionar $HOME/n/bin
ao PATH
e instala o mais recente Versão LTS Node.js.
Como resultado, o próprio n
e todas as versões do Node.js que ele gerencia são hospedadas em um único diretório opcionalmente configurável, que você pode remover posteriormente com o script n-uninstall
incluído. n-update
se n
para a versão mais recente. Consulte o repositório n-install para obter mais detalhes.
Mudar de um Node.js anterior instalado para um local diferente pode envolver algumas etapas extras. Consulte a documentação para alterar a localização do nó para obter um exemplo passo a passo de como mudar do uso do Homebrew para o uso de n
para gerenciar o Node.js.
Você terá um problema com várias versões se, após instalar o nó, você perceber que os locais "instalados" e "ativos" são diferentes:
% n lts
copying : node/20.12.2
installed : v20.12.2 to /usr/local/bin/node
active : v21.7.3 at /opt/homebrew/bin/node
Basta executar n <version>
para baixar e instalar uma versão do Node.js. Se <version>
já tiver sido baixado, n
será instalado a partir de seu cache.
n 10.16.0
n lts
Execute n
sozinho para visualizar as versões baixadas e instale a versão selecionada.
$ n
node/4.9.1
ο node/8.11.3
node/10.15.0
Use up/down arrow keys to select a version, return key to install, d to delete, q to quit
(Você também pode usar j e k para selecionar a versão seguinte ou anterior em vez de usar setas ou ctrl+n e ctrl+p .)
Se a versão do nó ativo não mudar após a instalação, tente abrir um novo shell caso veja uma versão obsoleta.
Existem várias maneiras de especificar a versão alvo do Node.js para n
comandos. A maioria dos comandos usa a versão correspondente mais recente e n ls-remote
lista várias versões correspondentes.
Os números de versão numéricos podem ser completos ou incompletos, com um v
inicial opcional.
4.9.1
8
: versões 8.xyv6.1
: versões 6.1.xExistem rótulos para duas versões especialmente úteis:
lts
: mais novo lançamento oficial do Suporte de Longo Prazolatest
, current
: mais novo lançamento oficial Há um rótulo auto
para ler a versão de destino de um arquivo no diretório atual ou em qualquer diretório pai. n
procura em ordem:
.n-node-version
: versão em linha única. Personalizado para n
..node-version
: versão em linha única. Usado por várias ferramentas: node-version-usage.nvmrc
: versão em linha única. Usado por nvm
.engine
conforme abaixo. O rótulo engine
procura um arquivo package.json
e lê o campo engines
para determinar o Node.js compatível. Requer uma versão instalada de jq
ou node
e usa npx semver
para resolver intervalos complexos.
Há suporte para os fluxos de lançamento nomeados:
argon
, boron
, carbon
: codinomes para fluxos de liberação LTSEsses aliases de suporte do Node.js podem ser usados, mas simplesmente resolvem para a versão correspondente mais recente:
active
, lts_active
, lts_latest
, lts
, current
, supported
O formulário da última versão serve para especificar outras versões disponíveis usando o nome da pasta de download remoto, opcionalmente seguido pela versão completa ou incompleta.
nightly
test/v11.0.0-test20180528
rc/10
Remova algumas versões em cache:
n rm 0.9.4 v0.10.0
Removendo todas as versões em cache, exceto a versão instalada:
n prune
Remova o Node.js instalado (não afeta as versões em cache). Isso pode ser útil para reverter para a versão do sistema do node (se estiver em um local diferente), ou se você não quiser mais usar node e npm, ou estiver mudando para uma forma diferente de gerenciá-los.
n uninstall
Existem três comandos para trabalhar diretamente com as versões baixadas do Node.js, sem reinstalar.
Você pode mostrar o caminho para a versão node
baixada:
$ n which 6.14.3
/usr/local/n/versions/6.14.3/bin/node
Ou execute uma versão baixada node
com o comando n run
:
n run 8.11.3 --debug some.js
Ou execute um comando com PATH
modificado para que node
e npm
sejam da versão baixada do Node.js. (Observação: npm
executado desta forma usará node_modules globais da pasta de versão do nó de destino.)
n exec 10 my-script --fast test
n exec lts zsh
Uma instalação do Node.js normalmente também inclui npm
, npx
e corepack
, mas você pode querer preservar suas versões atuais (especialmente as mais recentes) usando --preserve
:
$ npm install -g npm@latest
...
$ npm --version
6.13.7
# Node.js 8.17.0 includes (older) npm 6.13.4
$ n -p 8
installed : v8.17.0
$ npm --version
6.13.7
Você pode tornar isso o padrão definindo a variável de ambiente como uma string não vazia. Existem variáveis de ambiente separadas para npm
e corepack
:
export N_PRESERVE_NPM=1
export N_PRESERVE_COREPACK=1
Você pode ser explícito para obter o comportamento desejado, independentemente das variáveis de ambiente:
n --preserve nightly
n --no-preserve latest
A ajuda da linha de comando pode ser obtida em n --help
.
Liste as versões remotas correspondentes disponíveis para download:
n ls-remote lts
n ls-remote latest
n lsr 10
n --all lsr
Liste as versões baixadas no cache:
n ls
Baixe a versão no cache:
n download 22
Use n
para acessar versões em cache (já baixadas) sem internet disponível.
n --offline 12
Remova a versão do cache após instalar usando --cleanup
. Isso é particularmente útil para uma instalação única, como em um contêiner docker.
curl -fsSL https://raw.githubusercontent.com/tj/n/master/bin/n | bash -s install --cleanup lts
Normalmente n run
, n exec
e n which
falharão se a versão de destino ainda não estiver no cache. Você pode adicionar --download
para usar o cache, se disponível, ou fazer download, se necessário:
n --download run 18.3 my-script.js
Exibir diagnósticos para ajudar a resolver problemas:
n doctor
Se desejar usar um espelho Node.js diferente que tenha o mesmo layout do https://nodejs.org/dist/ padrão, você pode definir N_NODE_MIRROR
.
Um exemplo é para usuários na China que podem definir:
export N_NODE_MIRROR=https://npmmirror.com/mirrors/node
Outro exemplo é o projeto de builds não oficiais do Node.js que possui downloads para algumas plataformas não disponibilizadas oficialmente, como armv6l (Raspberry Pi) e x86 de 32 bits.
export N_NODE_MIRROR=https://unofficial-builds.nodejs.org/download/release
Pode ser necessário especificar a arquitetura explicitamente se não for detectada automaticamente por n
, como usar musl
libc
no Alpine:
export N_NODE_MIRROR=https://unofficial-builds.nodejs.org/download/release
apk add bash curl libstdc++
n --arch x64-musl install lts
Se o espelho personalizado exigir autenticação, você poderá adicionar o nome de usuário e a senha codificados em URL ao URL. por exemplo
export N_NODE_MIRROR=https://encoded-username:encoded-password@host:port/path
Há também N_NODE_DOWNLOAD_MIRROR
para um espelho diferente com o mesmo layout do https://nodejs.org/download padrão.
Por padrão, n
escolhe os binários que correspondem à arquitetura do seu sistema. Por exemplo, em um sistema de 64 bits n
fará download de binários de 64 bits.
Em um Mac com Apple Silicon:
n
padroniza binários arm64 que são executados nativamenten
padroniza binários x64 que são executados no Rosetta 2 Você pode substituir a arquitetura padrão usando a opção -a
ou --arch
.
por exemplo, reinstale a versão mais recente do Node.js com binários x64:
n rm current
n --arch x64 current
O comando n
baixa e instala em /usr/local
por padrão, mas você pode substituir esse local definindo N_PREFIX
. Para alterar o local para $HOME/.n
, adicione linhas como as seguintes ao arquivo de inicialização do shell:
export N_PREFIX=$HOME/.n
export PATH=$N_PREFIX/bin:$PATH
Se você quiser armazenar os downloads em um local diferente, use N_CACHE_PREFIX
. Isso não afeta o local onde a versão do nó ativo está instalada.
O padrão de n
é usar tarballs Node.js compactados xz para o download, se for provável que o tar no sistema suporte a descompactação xz. Você pode substituir a escolha automática definindo uma variável de ambiente como zero ou diferente de zero:
export N_USE_XZ=0 # to disable
export N_USE_XZ=1 # to enable
Você pode ser explícito para obter o comportamento desejado, independentemente da variável de ambiente:
n install --use-xz nightly
n install --no-use-xz latest
Em resumo:
N_NODE_MIRROR
: Consulte fonte personalizadaN_NODE_DOWNLOAD_MIRROR
: Consulte a fonte personalizadaN_MAX_REMOTE_MATCHES
para alterar o ls-remote
padrão máximo de 20 versões correspondentesN_PRESERVE_NPM
: Consulte Preservando npmN_PRESERVE_COREPACK
: Consulte Preservando npm n
baixa um pacote Node.js pré-construído e instala em um único prefixo (por exemplo, /usr/local
). Isso substitui a versão anterior. A pasta bin
neste local deve estar em seu PATH
(por exemplo, /usr/local/bin
).
Os downloads são mantidos em uma pasta de cache para serem usados em reinstalações. Os downloads também estão disponíveis para uso limitado usando n which
n run
e n exec
.
Os pacotes npm
globais não são alterados pela instalação, com exceção do próprio npm
, que faz parte da instalação do Node.js.