这个项目能做什么

`n` 是一个轻量级、基于 BASH 的 Node.js 版本管理器,旨在简化操作。它允许用户通过交互式或命令行参数下载、安装和切换多个 Node.js 版本,无需子 shell、修改配置文件或复杂 API。 ## 支持平台 `n` 可在 macOS、Linux(包括适用于 Linux 的 Windows 子系统)及其他类 Unix 系统上运行。它不适用于原生 Windows shell(如 PowerShell)、Git for Windows BASH 或 Cygwin DLL 环境。 ## 安装 如果已安装 Node.js,通过 npm 安装 `n` 是最简单的方式: ```bash npm install -g n ``` 默认情况下,`n` 安装到 `/usr/local`,可能需要适当权限。可选方案包括更改目录所有权、使用自定义 `N_PREFIX` 位置或使用 `sudo` 运行。 如需无 npm 引导安装,可直接下载并运行 `n`: ```bash curl -fsSL https://raw.githubusercontent.com/tj/n/master/bin/n | bash -s install lts ``` 第三方安装器可用于 macOS(通过 Homebrew 的 `brew install n` 和 MacPorts 的 `port install n`),以及 Linux/macOS 的 `n-install`。 ## 主要功能 - **交互式选择**:单独运行 `n` 可查看已下载版本,并使用方向键选择。 - **版本指定**:支持完整或部分版本号(如 `4.9.1`、`8`、`v6.1`),标签如 `lts`、`latest`、`current`,以及代号(`argon`、`boron`、`carbon`)。 - **自动版本检测**:读取 `.n-node-version`、`.node-version`、`.nvmrc` 或 `package.json` 中的 `engines` 字段。 - **缓存管理**:下载内容会缓存以供离线重装;`n ls` 列出缓存版本,`n rm` 移除特定版本,`n prune` 清除除当前版本外的所有缓存。 - **直接执行**:`n run <version> <script>` 使用特定 Node.js 版本运行脚本;`n exec <version> <command>` 使用该版本的 `PATH` 运行命令;`n which <version>` 显示二进制路径。 - **保留 npm**:使用 `--preserve` 或 `N_PRESERVE_NPM`/`N_PRESERVE_COREPACK` 保留当前 npm/corepack 版本。 - **自定义镜像**:设置 `N_NODE_MIRROR` 或 `N_NODE_DOWNLOAD_MIRROR` 以使用替代下载源(如中国镜像或非官方构建)。 - **架构覆盖**:使用 `--arch` 或 `N_ARCH` 选择特定二进制(如 Alpine 的 `x64-musl`)。 - **环境变量**:`N_PREFIX` 更改安装位置;`N_CACHE_PREFIX` 更改缓存位置;`NO_COLOR`/`CLICOLOR=0` 控制 ANSI 颜色。 - **诊断**:`n doctor` 帮助排查问题。 ## 使用示例 ```bash n 10.16.0 # 安装特定版本 n lts # 安装最新 LTS n ls-remote lts # 列出匹配的远程版本 n ls # 列出缓存版本 n rm 0.9.4 # 移除缓存版本 n uninstall # 移除当前 Node.js(保留缓存) n run 8.11.3 --debug some.js n exec 10 my-script --fast test n --offline 12 # 使用缓存版本,无需网络 ``` ## 工作原理 `n` 将 Node.js tarball 下载到缓存文件夹(默认:`N_PREFIX/n/versions`),并将当前版本安装到 `bin`、`include`、`lib` 和 `share` 子目录。除非使用 `--preserve`,否则不会修改全局 npm 包。该工具设计为极简透明,是偏好简单版本管理器的开发者的热门选择。