Sobre o projeto

`n` é um gerenciador de versões Node.js leve, baseado em BASH, projetado para simplicidade. Ele permite baixar, instalar e alternar entre múltiplas versões do Node.js de forma interativa ou via argumentos de linha de comando, sem exigir subshells, modificações de perfil ou APIs complexas. ## Plataformas Suportadas `n` roda em macOS, Linux (incluindo Windows Subsystem for Linux) e outros sistemas Unix-like. Ele não funciona em shells nativos do Windows (ex.: PowerShell), Git para Windows BASH ou com a DLL do Cygwin. ## Instalação Se o Node.js já estiver instalado, a maneira mais fácil de instalar o `n` é via npm: ```bash npm install -g n ``` Por padrão, o `n` instala em `/usr/local`, o que pode exigir permissões apropriadas. As opções incluem alterar a propriedade do diretório, usar um local personalizado `N_PREFIX` ou executar com `sudo`. Para inicialização sem npm, você pode baixar e executar o `n` diretamente: ```bash curl -fsSL https://raw.githubusercontent.com/tj/n/master/bin/n | bash -s install lts ``` Instaladores de terceiros estão disponíveis para macOS via Homebrew (`brew install n`) e MacPorts (`port install n`), e para Linux/macOS via `n-install`. ## Principais Recursos - **Seleção interativa**: Execute `n` sozinho para ver as versões baixadas e selecione uma com as teclas de seta. - **Especificação de versão**: Suporta números de versão completos ou parciais (ex.: `4.9.1`, `8`, `v6.1`), rótulos como `lts`, `latest`, `current` e codinomes (`argon`, `boron`, `carbon`). - **Detecção automática de versão**: Lê `.n-node-version`, `.node-version`, `.nvmrc` ou o campo `engines` no `package.json`. - **Gerenciamento de cache**: Os downloads são armazenados em cache para reinstalações offline; `n ls` lista versões em cache, `n rm` remove versões específicas, `n prune` limpa tudo exceto a ativa. - **Execução direta**: `n run <versão> <script>` executa um script com uma versão específica do Node.js; `n exec <versão> <comando>` executa um comando com o `PATH` da versão; `n which <versão>` mostra o caminho do binário. - **Preservando npm**: Use `--preserve` ou `N_PRESERVE_NPM`/`N_PRESERVE_COREPACK` para manter as versões atuais do npm/corepack. - **Espelhos personalizados**: Defina `N_NODE_MIRROR` ou `N_NODE_DOWNLOAD_MIRROR` para fontes de download alternativas (ex.: espelho da China ou builds não oficiais). - **Sobrescrever arquitetura**: Use `--arch` ou `N_ARCH` para selecionar binários específicos (ex.: `x64-musl` para Alpine). - **Variáveis de ambiente**: `N_PREFIX` altera o local de instalação; `N_CACHE_PREFIX` altera o local do cache; `NO_COLOR`/`CLICOLOR=0` controlam cores ANSI. - **Diagnóstico**: `n doctor` ajuda a solucionar problemas. ## Exemplos de Uso ```bash n 10.16.0 # Instalar uma versão específica n lts # Instalar a última LTS n ls-remote lts # Listar versões remotas correspondentes n ls # Listar versões em cache n rm 0.9.4 # Remover uma versão em cache n uninstall # Remover Node.js ativo (manter cache) n run 8.11.3 --debug some.js n exec 10 my-script --fast test n --offline 12 # Usar versão em cache sem internet ``` ## Como Funciona `n` baixa tarballs do Node.js para uma pasta de cache (padrão: `N_PREFIX/n/versions`) e instala a versão ativa nos subdiretórios `bin`, `include`, `lib` e `share`. Ele não modifica pacotes npm globais, a menos que `--preserve` seja usado. A ferramenta é projetada para ser mínima e transparente, tornando-a uma escolha popular para desenvolvedores que preferem um gerenciador de versões direto.