Node.js 版本管理工具总结
Node.js 版本管理工具可分为两类:CLI(命令行界面) 与 GUI(图形化界面)。命令行界面适合于快速和自动化的任务,但对于新手用户来说学习曲线较陡;图形化界面则更直观易用,但可能牺牲了一些灵活性和控制力。
本文面对的是小白用户,自然从 GUI 开始介绍。
下文提到的仅为部分 Node.js 版本管理工具。
1.1 nvm-desktop
1.1.1 介绍
地址:https://github.com/1111mp/nvm-desktop
nvm-desktop 是一款基于 Electron 构建的桌面应用,旨在通过图形化界面管理多个 Node 版本,支持跨平台使用。该应用可快速安装和运行不同版本的 Node,并为各个项目单独设置、切换 Node 版本,而无需依赖操作系统的特定功能或 shell 环境。同时 nvm-desktop 支持为不同项目设置不同版本的 Node.js。
应用界面如下:

1.1.2 使用
初次启动应用时,会有使用引导指导你如何使用软件。在下载 Node.js 之前,需要将 "C:\Users\username\.nvmd\bin 目录添加到系统环境变量中。之后便可以开始下载、安装、使用任意版本的 Node.js。
nvm-desktop 还提供了一个命令行工具——nvmd-command,它专门用于切换 Node 版本,不支持下载和安装 Node.js。尽管在使用了图形化界面后,可能不太需要使用命令行工具,但有备无患。
nvmd 主要命令一览:
# 显示已安装的 Node.js
nvmd ls
# 使用指定版本 Node.js
nvmd use 18.17.1
# 对任意项目使用指定版本 Node.js
$ nvmd use v20.5.1 --project
# 显示当前使用 Node.js
$ nvmd current还可以使用 nvmd --help 获取 nvmd 的使用指南。
详细信息:https://github.com/1111mp/nvm-desktop/blob/main/README-zh_CN.md
1.2 nvm
1.2.1 介绍
地址:https://github.com/nvm-sh/nvm
nvm(Node Version Manager)是一个用于管理多个 Node.js 版本的工具。它是一个基于 POSIX 标准的 bash 脚本,可以让用户轻松地安装、管理和切换不同的 Node.js 版本。NVM 允许用户在同一台计算机上同时运行不同版本的 Node.js,以满足不同项目的需求。nvm 可在任何 POSIX 兼容的 shell(如 sh、dash、ksh、zsh、bash)上工作,适用于 Unix、macOS 和 Windows WSL 等平台。
1.2.2 使用
1、下载
# 国外
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# 国内
bash -c "$(curl -fsSL https://gitee.com/RubyMetric/nvm-cn/raw/main/install.sh)"2、使用
nvm 常用命令一览:
(1)列出可安装的 Node.js
nvm list-remote / nvm ls-remote
nvm list-remote --lts / nvm ls-remote --lts # 列出可安装的 Node.js 长期支持版(2)列出已安装的 Node.js 版本
nvm list / nvm ls(3)安装 Node.js
安装的第一个版本将成为默认版本,该版本别名为 default。
nvm install <version> # 安装指定版本
nvm install node # 安装最新版本
nvm install --lts # 安装最新长期支持版本(4)使用 Node.js
nvm 支持为不同项目设置不同的 Node.js 版本,即环境隔离。方法见 calling-nvm-use-automatically-in-a-directory-with-a-nvmrc-file。
nvm use <version> # 使用指定版本
nvm use node # 使用最新版本
nvm use --lts # 使用最新长期支持版本(5)显示当前使用的 Node.js
nvm current(6)卸载 Node.js
nvm uninstall <version> # 卸载指定版本
nvm uninstall node # 卸载最新版本
nvm uninstall --lts # 卸载最新长期支持版本(7)设置别名:
nvm alias <alias-name> <version> # 给特定版本设置别名(8)删除别名
nvm unalias <alias-name> # 删除设置的别名还可以使用 nvm --help 获取 nvm 的使用指南。
详细使用说明:https://github.com/nvm-sh/nvm#usage
1.3 nvm-windows
1.3.1 介绍
地址:https://github.com/coreybutler/nvm-windows
NVM(Node Version Manager)仅支持 MacOS 和 Linux。在 Windows 平台上,可以使用 NVM for Windows(NVM4W)来管理多个 Node.js 版本。它允许用户在单个 Windows 计算机上安装和切换多个 Node.js 版本。与 Unix 平台上的 NVM 类似,但经过了针对 Windows 环境的优化,并提供了安装程序。NVM for Windows 使用 Go 语言编写。
通过使用 NVM4W,用户可以在不影响稳定版 Node.js 的前提下,测试模块与最新开发版的兼容性。它支持从 Node.js 4+ 版本开始的所有版本。目前,NVM4W 的开发者已经开始全职开发 Runtime,它是 Windows 版 NVM 的后继者。
1.3.2 使用
1、卸载原有 Node.js 环境
为确保 NVM for Windows 能正常运行并避免权限和路径冲突问题,建议在安装前先卸载已有的 Node.js。
快速卸载干净 node 和 npm 环境 - bilibili
2、下载
进入 Releases · coreybutler/nvm-windows (github.com),下载 nvm-setup.exe。安装 NVM for Windows 一直下一步即可。
3、使用
nvm 常用命令一览:
(1)列出已安装的 Node.js
在命令末尾输入 available 显示可供下载的部分版本列表。
nvm list / nvm ls
nvm list available / nvm ls available(2)安装 Node.js
nvm install <version> # 安装指定版本
nvm install latest # 安装最新版本
nvm install lts # 安装最新长期支持版本(3)使用 Node.js
关于在特定目录下使用 use 命令(或结合 .nvmrc 文件使用),请参阅 issue #16 / How can I use two different versions of Node.js at the same time? 获取详细信息。
nvm use <version> # 使用指定版本
nvm use latest # 使用最新版本
nvm use lts # 使用最新长期支持版本
nvm use newest # 使用已安装的最新版本(4)显示当前使用的 Node.js
nvm current(5)卸载 Node.js
nvm uninstall <version> # 卸载指定版本
nvm uninstall latest # 卸载最新版本
nvm nuinstall lts # 卸载最新长期支持版本还可以使用 nvm --help 获取 NVM for Windows 的使用指南。
详细使用说明:https://github.com/coreybutler/nvm-windows?tab=readme-ov-file#usage
1.4 fnm
1.4.1 介绍
地址:https://github.com/Schniz/fnm
Fast Node Manager(fnm)是一个快速简便的 Node.js 版本管理器,采用 Rust 构建。它支持跨平台(macOS、Windows、Linux),以单文件的形式提供,安装简便且启动迅速,注重速度。fnm 能自动识别并依据项目中的 .node-version 或 .nvmrc 文件切换到相应的 Node.js 版本,即环境隔离。
1.4.2 使用
1、下载
# macOS/Linux
curl -fsSL https://fnm.vercel.app/install | bash
# Windows
winget install Schniz.fnm2、配置环境
(1)Bash
复制以下内容到 .bash_profile 或 .bashrc。
eval "$(fnm env --use-on-cd)"(2)Zsh
复制以下内容到 .zshrc。
eval "$(fnm env --use-on-cd)"(3)PowerShell
执行 notepad $profile,打开 PowerShell 配置文件,复制以下内容到 Microsoft.PowerShell_ profile.ps1。
fnm env --use-on-cd | Out-String | Invoke-Expression3、使用
fnm 常用命令一览:
(1)列出可安装的 Node.js 版本
fnm list-remote / fnm ls-remote(2)列出已安装的 Node.js 版本
fnm list / fnm ls(3)安装 Node.js
fnm install [VERSION] # 安装指定版本
fnm install --latest # 安装最新版本
fnm install --lts # 安装最新长期支持版本(4)使用 Node.js
指定的版本不存在,会提示是否下载。在项目文件夹中添加 .node-version 或 .nvmrc 文件并填写所需的版本号,可以实现不同项目使用不同的 Node.js 版本。
fnm use [VERSION] # 使用指定版本(5)设置别名
<TO_VERSION>:要别名化的 Node.js 版本,<NAME>:为指定版本设置的别名。
fnm alias [OPTIONS] <TO_VERSION> <NAME>
# 示例
fnm alias 21.7.1 main(6)移除别名
<REQUESTED_ALIAS>: 要移除的别名名称。
fnm unalias [OPTIONS] <TO_VERSION> <NAME>
# 示例
fnm unalias 21.7.1 main(7)设置 Node.js 默认版本
等同于运行 fnm alias VERSION default,其中 VERSION 是要设置为默认版本的 Node.js 版本。
fnm default <VERSION>(8)显示当前使用的 Node.js
fnm current(9)卸载 Node.js
[VERSION] 是别名时,将卸载别名所指向的 Node.js 版本和指向该版本的其他别名。
fnm uninstall [VERSION]还可以使用 fnm --help 获取 fnm 的使用指南。
详细使用说明:https://github.com/Schniz/fnm/blob/master/docs/commands.md
1.5 nvs
1.5.1 介绍
地址:https://github.com/jasongin/nvs
nvs(Node Version Switcher)是一个跨平台的实用工具,用于在不同的 Node.js 版本和分支之间进行切换。nvs 本身是用 Node.js 编写。该工具受到了其他 Node.js 版本管理工具的启发,特别是 nvm,它借鉴了很多思想和一些命令行语法。此外,nvs 能够自动识别并基于项目目录下的配置文件(如 .nvmrc 或 .node-version),使用指定的 Node.js 版本,即环境隔离。
1.5.2 使用
1、下载
(1)Windows
进入 Releases · jasongin/nvs (github.com),下载 msi 后缀文件,并安装。
(2)Mac/Linux
执行以下代码,安装 nvs。
export NVS_HOME="$HOME/.nvs"
git clone https://github.com/jasongin/nvs "$NVS_HOME"
. "$NVS_HOME/nvs.sh" install2、使用
直接输入 nvs,不带参数,终端会显示用于切换和下载 Node.js 版本的交互式菜单。如下:

(1)列出可安装的 Node.js 版本
[filter] 可以是部分版本,例如 20。执行 nvs ls-remote 20,只输出大版本为 20 的 Node.js 版本。
nvs lsr [filter]
nvs ls-remote [filter]
nvs list-remote [filter](2)列出已安装的 Node.js 版本
nvs ls [filter]
nvs list [filter](3)下载 Node.js
nvs add [version] # 安装指定版本
nvs add latest # 安装最新版本
nvs add lts # 安装最新长期支持版本(4)使用 Node.js
nvs use [version] # 使用指定版本
nvs [version] # 使用指定版本
nvs use latest # 使用最新版本
nvs use lts # 使用最新长期支持版本
nvs use / nvs use auto # 使用 .nvmrc 或 .node-version 指定版本(5)卸载 Node.js
nvs rm <version>
nvs remove <version>(6)指定默认 Node.js 版本
nvs link [version](7)移除默认 Node.js 版本
nvs unlink [version](8)Node.js 版本增加别名
<name>:别名,<version>:版本号。执行 nvs alias 输出所有别名。
nvs alias <name> <version>
# 使用别名
nvs use test(9)自动切换 Node.js 版本
nvs auto 查找并应用最近目录下的版本配置文件(.nvmrc 或 .node-version)指定的 Node.js 版本,否则用默认版本;nvs auto on/off 控制是否开启 shell 工作目录变更时自动切换 Node.js 版本的功能(不支持 Windows CMD)。
个人觉得想要实现环境隔离,直接在项目文件夹里执行 nvs use 即可。
nvs auto
nvs auto on
nvs auto off还可以使用 nvs --help 获取 nvs 的使用指南。
详细使用说明:https://github.com/jasongin/nvs#command-reference
1.6 Volta
1.6.1 介绍
地址:https://github.com/volta-cli/volta
Volta 是一款旨在简化 JavaScript 命令行工具管理而设计的工具。它提供按项目无缝切换 Node.js 及其它工具版本的功能,具有跨平台支持、多包管理器兼容性、稳定工具安装(不受 Node.js 升级影响)以及可扩展的自定义配置等特性。
通过 Volta,开发者可以一次性设定项目所需 Node.js 版本,并在不同项目间轻松切换版本,无需手动调整,同时还能确保 npm 包二进制文件的稳定使用,极大提升了工作效率和开发体验。
Volta 不只是 Node.js 版本管理工具。
1.6.2 使用
1、下载
(1)macOS/Linux
curl https://get.volta.sh | bash(2)Windows
进入 Releases · volta-cli/volta (github.com),下载 .msi 后缀文件。
2、使用
(1)下载 Node.js
volta install node@[VERSION] # 安装指定版本
volta install node@latest # 安装最新版本
volta install node # 安装最新长期支持版本(2)列出已安装的 Node.js 版本
volta 没有列出可安装的 Node.js 版本的功能。
volta list node / volta ls node(3)使用 Node.js
volta pin node@[VERSION] # 安装指定版本
volta pin node@latest # 安装最新版本
volta pin node # 安装最新长期支持版本执行后,会在文件夹里的 package.json 文件增加以下代码,即每个项目的 Node.js 版本相互隔离。
"volta": {
"node": "18.19.0"
}如果没有 package.json 文件,则指定 Node.js 版本失败。
(4)卸载 Node.js
Volta 无法通过命令行卸载 Node.js。需要进入 C:\Users\username\AppData\Local\Volta\tools\image\node 路径,删除 Node.js 版本。
详细使用说明:https://docs.volta.sh/reference/
总结
用一张表格总结,如下:
| 工具 | 跨平台 | 环境隔离 | 下载进度条 | 占用空间 | 安装简易度 | 卸载便捷性 | 易用性 | 社区支持 |
|---|---|---|---|---|---|---|---|---|
| nvm-desktop | ✔️ | ✔️ | ✔️ | 259MB | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| nvm | ❌ | ✔️ | ✔️ | 156KB | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| nvm-windows | ❌ | ❔ | ❌ | 11MB | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| fnm | ✔️ | ✔️ | ❌ | 7.52MB | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| nvs | ✔️ | ❔ | ✔️ | 1.24MB | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| volta | ✔️ | ✔️ | ❔ | 42.73MB | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ |
注:表格中各项数据可能存在时效性,请根据各工具的最新版本信息进行核实。
- ✔️:表示工具完全支持该功能。
- ❌:表示工具不支持该功能。
- ❔:表示部分支持该功能。
- 🌟:符号个数反映特性或功能的优劣,五星最佳。
以下是表格中各功能选项的详细解释:
| 功能 | 解释 |
|---|---|
| 环境隔离 | 表示该软件是否能够为每个项目创建独立的 Node.js 环境,避免不同项目间的版本冲突。 |
| 占用大小 | 表示该软件本身的大小。 |
| 安装简易度 | 使用该软件前的准备工作的简单程度,用星星数量表示,🌟 越多代表安装过程越简单,使用前提条件越少。 |
| 易用性 | 表示工具的用户界面友好程度,以及命令行工具的学习曲线和操作难度。 |
| 社区支持 | 衡量软件的社区活跃程度,包括是否有持续的更新、bug 修复、文档完备性以及用户问答论坛的活跃状况。 |
补充
mini-nrm
地址:https://github.com/CreateWheel/mini-nrm
mini-nrm 是一款极为轻巧的 npm 注册表管理工具,专为实现 npm 镜像站点的便捷管理、快速切换和性能测试而设计。
1、下载
npm install -g mini-nrm2、使用
mnrm ls # 列出所有镜像
mnrm test # 镜像测速
mnrm use [registry-name] # 使用镜像