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。

应用界面如下:

nvm-desktop 界面

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.fnm

2、配置环境

(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-Expression

3、使用

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" install

2、使用

直接输入 nvs,不带参数,终端会显示用于切换和下载 Node.js 版本的交互式菜单。如下:

nvs 交互式菜单

(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-windows11MB⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
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-nrm

2、使用

mnrm ls                     # 列出所有镜像
mnrm test                   # 镜像测速
mnrm use [registry-name]    # 使用镜像
如有疑问,请在评论区留言,我会尽快回复。觉得文章不错?点击右侧按钮可复制文章链接。

Node.js 版本管理工具总结
作者
See Yue
发布于
2024年3月7日
更新于
2024年4月10日
许可协议
评论区