nvm 常用命令
nvm(Node Version Manager)是 Node.js 的版本管理工具,可以在同一台机器上安装和切换多个 Node.js 版本。不同系统有不同的实现。
安装
macOS / Linux(nvm)
bash
# 安装 nvm(访问 https://github.com/nvm-sh/nvm 查看最新版本)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
# 或使用 wget
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
# 安装后重启终端,或执行以下命令
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
# 验证安装
nvm --versionWindows(nvm-windows)
bash
# 下载安装包
# https://github.com/coreybutler/nvm-windows/releases
# 安装后验证
nvm version⚠️ nvm 和 nvm-windows 是两个不同的项目,部分命令有差异。
常用命令
查看版本
bash
# 查看 nvm 版本
nvm --version
# 查看当前 Node 版本
node -v
# 查看当前 npm 版本
npm -v
# 查看已安装的 Node 版本
nvm ls
nvm list
# 查看当前使用的版本
nvm current
# 查看可安装的远程版本(仅 macOS/Linux)
nvm ls-remote
nvm ls-remote --lts # 只看 LTS 版本(Long Term Support,长期支持版,稳定性高、维护周期长,适合生产环境)安装 & 切换版本
bash
# 安装最新版本
nvm install node
# 安装指定版本
nvm install 18
nvm install 18.17.0
# 安装最新 LTS 版本
nvm install --lts
nvm install lts/*
# 安装指定 LTS 代号
nvm install lts/hydrogen # Node.js 18.x
nvm install lts/iron # Node.js 20.x
# 切换到指定版本
nvm use 18
nvm use 18.17.0
# 切换到最新 LTS
nvm use --lts
nvm use lts/*
# 切换到系统版本
nvm use system设置默认版本
bash
# 设置默认 Node 版本(新终端自动使用)
nvm alias default 18
nvm alias default lts/*
# 查看当前默认版本
nvm alias default
# 查看所有别名
nvm alias⚠️ nvm-windows 1.1.12 及以上版本已支持
nvm alias命令。旧版本使用nvm default 18设置默认版本。
卸载版本
bash
# 卸载指定版本
nvm uninstall 18
nvm uninstall 18.17.0
# 不能卸载当前使用的版本
# 先切换到其他版本再卸载
nvm use 20
nvm uninstall 18⚠️
nvm use切换后只在当前终端会话生效,新开窗口会使用 default 版本。
运行指定版本
bash
# 用指定版本运行脚本(不切换当前版本)
nvm run 18 app.js
nvm run 18.17.0 app.js
# 用指定版本执行命令
nvm exec 18 node -v
nvm exec 18 npm install
# 查看指定版本的安装路径
nvm which 18
nvm which 18.17.0.nvmrc 文件(项目级 Node 版本锁定)
在项目根目录创建 .nvmrc 文件,指定该项目使用的 Node 版本:
bash
# .nvmrc
18或指定完整版本:
bash
# .nvmrc
18.17.0团队成员进入项目目录后,执行:
bash
# 自动安装并切换到 .nvmrc 指定的版本
nvm install
# 仅切换(已安装的情况)
nvm use自动切换(配置 shell)
配置终端自动读取 .nvmrc 并切换版本:
bash
# 在 ~/.bashrc 或 ~/.zshrc 中添加
# 进入目录时自动切换
cd() {
builtin cd "$@"
if [[ -f .nvmrc ]]; then
nvm use
fi
}💡 建议将
.nvmrc提交到 Git,确保团队成员使用相同的 Node 版本。
.node-version 文件
部分工具(如 Volta、asdf)也支持 .node-version 文件:
bash
# .node-version
18.17.0nvm 从 0.39.0 开始支持
.node-version文件。
镜像加速
bash
# 设置 Node 镜像源(淘宝)— 仅 macOS/Linux 版 nvm
nvm node_mirror https://npmmirror.com/mirrors/node/
# 设置 npm 镜像源 — 仅 macOS/Linux 版 nvm
nvm npm_mirror https://npmmirror.com/mirrors/npm/⚠️ nvm-windows 不支持
nvm node_mirror,需手动编辑安装目录下的settings.txt:node_mirror: https://npmmirror.com/mirrors/node/ npm_mirror: https://npmmirror.com/mirrors/npm/
重新安装全局包
bash
# 安装新版本时,自动从之前版本复制全局包
nvm install 20 --reinstall-packages-from=18
# 手动重新安装全局包
nvm use 20
npm install -g <package>常用工作流
多项目维护
bash
# 项目 A 使用 Node 16
cd ~/projects/project-a
nvm use 16
# 项目 B 使用 Node 18
cd ~/projects/project-b
nvm use 18测试不同版本兼容性
bash
# 安装多个版本
nvm install 16
nvm install 18
nvm install 20
# 逐个测试
nvm use 16 && node test.js
nvm use 18 && node test.js
nvm use 20 && node test.js清理旧版本
bash
# 查看已安装版本
nvm ls
# 卸载不再需要的版本
nvm uninstall 14
nvm uninstall 16升级到最新 LTS
bash
# 查看当前 LTS 版本
nvm ls-remote --lts | tail -1
# 安装最新 LTS
nvm install --lts
# 切换到最新 LTS
nvm use --lts
# 设置为默认
nvm alias default lts/*nvm 与其他版本管理工具
| 工具 | 系统 | 特点 |
|---|---|---|
| nvm | macOS/Linux | 最常用,shell 实现 |
| nvm-windows | Windows | 独立项目,部分命令不同 |
| fnm | 全平台 | Rust 实现,速度更快 |
| Volta | 全平台 | 自动切换,项目级锁定 |
| asdf | 全平台 | 通用版本管理(不限于 Node) |
常见问题
nvm use 报错:exit status 1
Windows 下需要以管理员权限运行终端,或者检查 settings.txt 中的路径配置。
切换版本后 npm 全局包丢失
bash
# 每个 Node 版本有独立的全局包目录
# 安装新版本时复制旧版本的全局包
nvm install 20 --reinstall-packages-from=18nvm 命令找不到
bash
# 检查 nvm 是否正确加载
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
# 添加到 shell 配置文件
echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bashrc
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> ~/.bashrc
source ~/.bashrcnode 版本正确但 npm 版本不对
bash
# 每个 Node 版本自带特定版本的 npm
# 更新当前版本的 npm
nvm install-latest-npmWindows 下路径问题
bash
# 检查 settings.txt 中的路径
# 通常在 C:\Users\<user>\AppData\Roaming\nvm\settings.txt
# 确保路径没有中文或空格
# 如果有,修改 settings.txt 中的 path 配置