# nvm-rust **Repository Path**: mose-x/nvm-rust ## Basic Information - **Project Name**: nvm-rust - **Description**: A New Choice for NVM & FNM - **Primary Language**: Rust - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2026-06-25 - **Last Updated**: 2026-07-11 ## Categories & Tags **Categories**: node-plugins **Tags**: None ## README # nvm-rs nvm-rs 是一个用 Rust 编写、高性能且功能丰富的 Node.js 版本管理器 —— [nvm](https://github.com/nvm-sh/nvm) 的 Rust 原生重写。以单一静态二进制交付,亚毫秒级启动,中英双语界面,并具备 15 项 nvm 和 fnm 都没有的独有功能:GPG 签名校验、断点续传、源码编译、离线安装,以及内置 yarn/pnpm/corepack 集成。为现代工作流而生。 ## 特性 - 安装、卸载、切换多个 Node.js 版本 - 支持模糊版本号(`20` → 最新的 `v20.x.x`) - 内置特殊别名:`node`、`stable`、`unstable`、`lts`、`lts/<代号>`、`system`、`default` - LTS 代号别名:`lts/argon`、`lts/boron`、`lts/carbon`、`lts/dubnium`、`lts/erbium`、`lts/fermium`、`lts/gallium`、`lts/hydrogen`、`lts/iron`、`lts/jod` - **io.js 支持** — 安装和管理历史 io.js 版本(`nvm install iojs`) - 支持 `.nvmrc` 和 `.node-version` 自动切换 - 用户自定义别名 - 镜像源配置(npmmirror、官方、自定义 URL) - 下载文件 SHA256 校验 - 多架构支持:`x64`、`arm64`(Apple Silicon、ARM Linux) - 跨平台:Linux、macOS、Windows - 读取 `NVM_DIR` 环境变量 - Shell 集成:通过 `nvm.sh` 让 `nvm use` 在当前 Shell 立即生效 - 版本间全局 npm 包迁移(`reinstall-packages`) - 升级指定版本的 npm 到最新(`install-npm`) - **缓存管理** — `nvm cache dir / list / clear` - **离线安装** — `nvm install --offline`(仅从缓存安装) - **源码编译** — `nvm install -s`(从源码包编译安装) - **复合安装选项** — `--latest-npm` 和 `--reinstall-packages-from=` - **LTS 卸载** — `nvm uninstall --lts` - **国际化** — `nvm language `(英文 / 中文,通过 `locales/*.toml` 可插拔扩展) - **代理管理** — `nvm proxy on/off`(使用系统代理环境变量) - **Shell 补全** — `nvm completion ` - **Corepack 支持** — `nvm corepack ` - **递归 .nvmrc 查找** — 自动切换时向上搜索父目录 - **package.json engines.node** — 从 package.json 读取 Node.js 版本要求 - **多 Shell 支持** — bash、zsh、Fish、PowerShell,带自动切换 ## 与 fnm、nvm-sh 的对比 | 功能 | nvm-rust(本项目) | fnm | nvm-sh | |------|------|------|------| | **实现语言** | Rust | Rust | Bash | | **启动开销** | 低(原生二进制) | 低(原生二进制) | 高(shell 解析) | | **单一二进制无运行时依赖** | ✅ | ✅ | ❌(需 bash) | | **Linux x86_64 (glibc)** | ✅ | ✅ | ✅(shell) | | **Linux aarch64 (glibc)** | ✅ | ✅ | ✅(shell) | | **Linux x86_64 (musl/Alpine 静态)** | ✅ | ✅ | ❌(需 bash+coreutils) | | **macOS x86_64 / aarch64** | ✅ | ✅ | ✅ | | **Windows 原生** | ❌ | ✅ | ❌(用 nvm-windows) | | **bash 集成** | ✅ | ✅ | ✅ | | **zsh 集成** | ✅ | ✅ | ✅ | | **fish 集成** | ✅ | ✅ | ✅ | | **PowerShell 集成** | ✅ | ✅ | ❌ | | **安装指定版本 `install 20`** | ✅ | ✅ | ✅ | | **安装 LTS `install --lts`** | ✅ | ✅ | ✅ | | **安装最新版 `install --latest`** | ✅ | ✅ | ✅ | | **仅未安装时装 LTS `--lts-newer`** | ✅ | ❌ | ❌ | | **版本号简写 `20` → 最新 20.x** | ✅ | ✅ | ✅ | | **`lts/*`、`lts/iron` 代号解析** | ✅ | ✅ | ✅ | | **从源码编译 `--source`** | ✅ | ❌ | ❌ | | **离线安装 `--offline`(用缓存)** | ✅ | ❌ | ❌ | | **io.js 安装** | ✅ | ❌ | ✅ | | **卸载 `uninstall` / `--lts` / `--latest`** | ✅ | ✅ | ✅(仅指定版本) | | **进度条下载** | ✅(indicatif) | ✅ | ✅(curl/wget) | | **断点续传** | ✅(HTTP Range + .part) | ❌ | ❌ | | **镜像源切换 `mirror`** | ✅(taobao/official/自定义) | ❌(靠 env) | ✅(`NVM_NODEJS_ORG_MIRROR`) | | **本地缓存复用** | ✅ | ✅ | ❌ | | **缓存 dir/list/clear** | ✅ | ❌ | ❌ | | **SHA-256 校验** | ✅ | ✅ | ✅ | | **GPG 签名验证 `SHASUMS256.txt.sig`** | ✅(按需导入公钥) | ❌ | ✅ | | **跳过验证 `--no-gpg-verify`** | ✅ | — | ❌ | | **离线自动跳过校验** | ✅ | — | ❌ | | **装完升级 npm `--latest-npm`** | ✅ | ❌ | ❌ | | **装完装 yarn `--latest-yarn`** | ✅ | ❌ | ❌ | | **装完装 pnpm `--latest-pnpm`** | ✅ | ❌ | ❌ | | **独立命令 `install-npm/yarn/pnpm`** | ✅ | ❌ | ❌ | | **全局包迁移 `reinstall-packages`** | ✅ | ❌ | ✅ | | **跨版本迁移 `migrate`(从 nvm-sh/nvm-windows)** | ✅ | ❌ | ❌ | | **corepack 启用/禁用/状态** | ✅ | ❌ | ❌ | | **`use ` 切换** | ✅ | ✅ | ✅ | | **`use` 读 `.nvmrc`/`.node-version`/`package.json#engines`** | ✅ | ✅(`.nvmrc`/`.node-version`) | ✅(`.nvmrc`) | | **`use --install-if-missing`** | ✅ | ✅ | ✅(`nvm install` 自动) | | **`use --save` 持久化为默认** | ✅ | ❌ | ✅(`nvm alias default`) | | **`use --use-on-cd` 装 cd 钩子** | ✅ | ❌(靠 shell 集成) | ❌ | | **`run