NVM 安装使用

NVM,即 Node Version Manager,是一个符合 POSIX 标准的 bash 脚本,主要用于管理多个活动的 node.js 版本。借助 NVM,开发者能够轻松地在不同的 Node.js 版本之间进行切换,满足不同项目对 Node.js 版本的需求。

GitHub: https://github.com/nvm-sh/nvm

安装

下面详细介绍在 *nix 系统(Linux 和 macOS)和 Windows 系统上的安装方式。

Linux / macOS

在安装 NVM 之前,需要先确保系统中已经安装好 gitcurlwget。一般情况下,安装过程不需要 sudo 权限。

安装命令

可以选择使用 curlwget 来执行安装操作,以下是具体命令:

使用 curl 安装:

1
2
rm -r ~/.nvm
curl -L -o- https://gh.xrgzs.top/https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | sed 's|https://\(raw\.\)\?github\(usercontent\)\?\.com|https://gh.xrgzs.top/&|g; s|curl --fail|& -L|g' | bash

使用 wget 安装:

1
2
rm -r ~/.nvm
wget -qO- https://gh.xrgzs.top/https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | sed 's|https://\(raw\.\)\?github\(usercontent\)\?\.com|https://gh.xrgzs.top/&|g; s|curl --fail|& -L|g' | bash

立即使用配置

安装完成后,如果希望立即使用 NVM,而不是重启终端,可以通过以下方式重载环境:

方法一:

1
2
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

方法二:

1
2
3
source ~/.profile
# 如果使用的是 zsh 终端,可以使用下面的命令
# source ~/.zprofile

安装目录

NVM 的安装目录为:~/.nvm

NVM 安装目录

换源

默认情况下,NVM 使用 nodejs.org 作为默认源。如果在下载 Node.js 版本时遇到下载缓慢的问题,可以通过设置环境变量来更改源:

1
export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node

设置完成后,建议重启终端使环境变量生效。

Windows

在 Windows 系统下,有两种安装 NVM 的方式可供选择,下面分别进行介绍。

1、使用官方 Bash 版本

需要注意的是,NVM 是一个 Bash 脚本,而 Windows 系统默认没有 Bash 环境。不过,如果你安装了 Git for Windows,那么系统中应该会有一个 Git Bash;或者安装了 Cygwin 或者 MSYS2,也可以在 Windows 下使用 Bash。

然而,这种方式存在一些缺点:

  • 执行效率低:目前这个 NVM 只能在 Bash 中使用,CMD、PowerShell 都无法使用,而且执行效率非常低。每次调用都相当于开机关机一遍 MINGW64,你可能会发现 Git Bash 的打开速度变慢,甚至可能需要 5 秒以上才能打开。查看 $HOME/.nvm/nvm.sh 文件,会发现其足足有 4000 多行,每次启动都会执行,由于 Windows 下 Shell 性能较差,卡顿现象比较明显。
  • 可能出现奇怪问题:据说这样使用会发生一些奇奇怪怪的问题,比如符号链接、UAC 权限等。

2、使用 nvm-windows

由于 Windows 下的 Shell 脚本存在使用不便的问题,有人用 Golang 重构出了 nvm-windows,推荐使用这种方式进行安装。

使用 Scoop 安装

可以使用 Scoop 包管理器来安装 nvm-windows,执行以下命令:

1
scoop install main/nvm
换源

为了提高下载速度,我们可以给 nvm-windows 换源。修改环境变量后,需要重启 PowerShell 或 CMD 才能生效。

设置 node 镜像源:

1
nvm node_mirror [url]        : Set the node mirror. Defaults to https://nodejs.org/dist/. Leave [url] blank to use default url.

设置 npm 镜像源:

1
nvm npm_mirror [url]         : Set the npm mirror. Defaults to https://github.com/npm/cli/archive/. Leave [url] blank to default url.

这里推荐使用 npmmirror.com 提供的源,执行以下命令:

1
2
nvm node_mirror https://npmmirror.com/mirrors/node/
nvm npm_mirror https://npmmirror.com/mirrors/npm/
更改安装位置

对于 Windows 用户,可能习惯对磁盘进行分区。如果使用 Scoop 安装,且 Scoop 安装到了 D 盘,那么 NVM 安装的 Node.js 也会跟随 Scoop 一起安装到 D 盘。如果 Scoop 安装在 C 盘,但想让 NVM 将 Node.js 安装到 D 盘,可以使用 nvm root [path] 命令进行修改,例如:

1
nvm root "d:\nodejs"

使用

列出所有能装的版本

此命令在 nvm-windows 中不可用,在 Linux 或 macOS 系统下,使用以下命令可以列出所有可安装的 Node.js 版本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
x@vbox:~$ nvm ls
            N/A
iojs -> N/A (default)
node -> stable (-> N/A) (default)
unstable -> N/A (default)
lts/* -> lts/jod (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.12 (-> N/A)
lts/fermium -> v14.21.3 (-> N/A)
lts/gallium -> v16.20.2 (-> N/A)
lts/hydrogen -> v18.20.8 (-> N/A)
lts/iron -> v20.19.2 (-> N/A)
lts/jod -> v22.16.0 (-> N/A)

安装使用长期支持版 Node.js

如果你希望安装并使用长期支持(LTS)版本的 Node.js,可以使用以下命令:

1
2
nvm install --lts
nvm use --lts

安装指定版本的 Node.js

要安装指定版本的 Node.js,只需在 nvm install 命令后面跟上版本号即可,例如安装 Node.js 18 版本:

1
nvm install 18

切换到指定版本的 Node.js

安装多个 Node.js 版本后,可以使用 nvm use 命令切换到指定版本,例如切换到 Node.js 18 版本:

1
nvm use 18

npm 换源

为了提高 npm 包的下载速度,可以将 npm 的源更换为国内的镜像源,例如 npmmirror.com 提供的源:

1
npm config set registry https://registry.npmmirror.com

安装 pnpm

pnpm 是 Node.js 的新一代包管理器,旨在更好地解决 npm 存在的一些问题。其官网为:https://pnpm.io/

可以使用以下命令全局安装 pnpm:

1
2
3
npm install -g pnpm
# 也可以使用 corepack 来启用 pnpm
# corepack enable pnpm

参考

在 WSL 2 上设置 Node.js | Microsoft Learn