本页面提供了使用 Node Version Manager (NVM) 管理多个 Node.js 环境的全面指南。NVM 允许开发人员在单个系统上安装、切换和管理不同版本的 Node.js。
有关安装说明,请参阅 安装,有关 NVM 核心组件的信息,请参阅 核心组件。
NVM 提供了几个命令来管理您系统上的 Node.js 版本。以下是最常见的操作:
| 命令 | 描述 |
|---|---|
nvm install <version> | 安装特定版本的 Node.js |
nvm use <version> | 切换到特定版本的 Node.js |
nvm run <version> [args] | 使用指定的 Node.js 版本运行命令 |
nvm exec <version> <command> | 使用指定的 Node.js 版本执行命令 |
nvm ls | 列出已安装的 Node.js 版本 |
nvm ls-remote | 列出可安装的版本 |
nvm alias <name> <version> | 为版本创建别名 |
nvm uninstall <version> | 卸载特定版本 |
nvm which <version> | 显示指定 Node.js 版本的路径 |
来源:README.md372-431 nvm.sh701-736
上面的图表显示了 NVM 如何通过解析版本说明符和管理 PATH 环境变量来处理用于安装和使用不同 Node.js 版本的命令。
来源:nvm.sh739-766 nvm.sh767-795 nvm.sh668-699 nvm.sh981-1004
NVM 在指定 Node.js 版本时接受不同的格式。
| 说明符 | 描述 | 示例 |
|---|---|---|
| 完整版本 | 显式版本号 | 14.17.0, 16.3.0 |
| 主版本号 | 主版本的最新版本 | 14, 16 |
node | 最新发布版本 | node |
lts/* | 最新的 LTS 版本 | lts/* |
lts/<name> | 特定的 LTS 版本 | lts/gallium |
system | 系统安装的 Node.js | system |
来源:nvm.sh739-766 nvm.sh869-884 nvm.sh894-927
NVM 支持通过 .nvmrc 文件进行项目特定的 Node.js 版本配置。这些文件允许您指定特定项目应使用的 Node.js 版本。
一个 .nvmrc 文件应包含一个单行,其中是有效的 Node.js 版本说明符。
14.17.0
或
lts/gallium
当您在包含 .nvmrc 文件的目录中运行 nvm use 或 nvm install 而不指定版本时,NVM 将使用文件中指定的版本。
来源:nvm.sh496-512 nvm.sh508-628 README.md445-464
您可以通过使用 shell 钩子配置您的 shell,使其在更改目录时自动切换 Node.js 版本,这些钩子会自动检测并使用 .nvmrc 文件。
对于 bash
对于 zsh
NVM 提供别名功能,用于为特定 Node.js 版本创建快捷方式。
| 命令 | 描述 |
|---|---|
nvm alias <name> <version> | 创建新别名 |
nvm alias default <version> | 设置默认 Node.js 版本 |
nvm unalias <name> | 删除别名 |
nvm alias | 列出所有别名 |
NVM 包含几个内置别名:
| 别名 | 描述 |
|---|---|
node | 最新发布的 Node.js 版本 |
lts/* | 最新的 LTS 版本 |
lts/<name> | 命名的 LTS 版本(例如,lts/gallium) |
默认 | 新 shell 中使用的默认版本 |
来源:nvm.sh682-684 README.md386-391 README.md425-431
Node.js 提供 LTS 版本,这些版本享有更长的维护窗口。NVM 使处理这些版本变得容易。
| 命令 | 描述 |
|---|---|
nvm install --lts | 安装最新的 LTS 版本 |
nvm install lts/* | 同上 |
nvm install lts/gallium | 安装特定的 LTS 版本 |
nvm use --lts | 切换到最新的 LTS 版本 |
nvm ls-remote --lts | 列出可用的 LTS 版本 |
来源:README.md432-443 nvm.sh894-927
切换 Node.js 版本时,您可能希望转移全局安装的包。NVM 提供了在版本之间迁移包的功能。
来源:README.md452-483 nvm.sh197-434
您可以通过创建 $NVM_DIR/default-packages 文件,配置 NVM 在安装新 Node.js 版本时自动安装特定包。
示例 default-packages 文件
rimraf
eslint
typescript
NVM 通过修改您的 PATH 环境变量来优先使用选定的 Node.js 版本。了解这一点有助于解决环境问题。
该图表显示了 NVM 如何管理 PATH 变量,以控制哪个 Node.js 版本在您的 shell 环境中是活动的。
来源:nvm.sh967-1004 README.md582-592
NVM 提供自定义输出颜色和格式的选项,以提高可读性。
颜色代码
来源:README.md537-579 nvm.sh1011-1096
对于无法直接访问 Node.js 官方分发服务器的用户,NVM 支持使用镜像站点。
镜像站点必须保持与官方分发服务器相同的目录结构。
NVM 的行为可以通过各种环境变量进行自定义。
| 可变 | 描述 |
|---|---|
NVM_DIR | NVM 安装目录 |
NVM_NODEJS_ORG_MIRROR | 自定义 Node.js 镜像 URL |
NVM_IOJS_ORG_MIRROR | 自定义 io.js 镜像 URL |
NVM_COLORS | 自定义颜色配置 |
NVM_NO_COLORS | 禁用彩色输出 |
NVM_SILENT | 抑制信息性输出 |
NVM_RC_VERSION | 覆盖检测到的 .nvmrc 版本 |
来源: README.md775-791 nvm.sh435-463
这里有一些在核心用法模式中未涵盖的附加有用命令
| 命令 | 描述 |
|---|---|
nvm current | 显示当前激活的版本 |
nvm deactivate | 取消设置环境变量以使用系统的 Node.js |
nvm reinstall-packages <version> | 将全局软件包从一个版本重新安装到另一个版本 |
nvm unload | 从 shell 中卸载 NVM |
nvm which <version> | 显示已安装的 Node.js 版本的路径 |
nvm cache dir | 显示缓存目录的路径 |
nvm version | 显示 NVM 版本 |
来源: README.md613-634
NVM 可以在 Docker 容器和 CI/CD 环境中使用,但对于非交互式 shell 需要特殊考虑。
对于 Docker
此模式可确保 NVM 在非交互式 shell 中正确加载。