nvm
nvm(Node Version Manager)是 Node.js 的版本管理工具,支持在同一台机器上安装和切换多个 Node.js 版本。适合同时维护多个项目(不同项目要求不同 Node 版本)或尝鲜新版本的场景。
Windows 上使用 nvm-windows(独立项目,命令相同);macOS / Linux 使用原版 nvm。
安装
macOS / Linux
# 官方安装脚本(替换为最新版本号)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# 或通过 wget
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash安装脚本会自动在 ~/.bashrc / ~/.zshrc / ~/.profile 中追加以下配置:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"重启终端或执行 source ~/.zshrc 使配置生效。
Windows(nvm-windows)
从 nvm-windows releases 下载 nvm-setup.exe 安装,安装时选择 nvm 目录和 Node 安装目录(建议路径不含空格和中文)。
核心命令
安装 Node.js
# 安装最新 LTS 版本(生产环境推荐)
nvm install --lts
nvm install lts/iron # 安装指定 LTS 代号
# 安装指定版本
nvm install 22 # 安装 22.x 最新补丁
nvm install 22.4.0 # 安装精确版本
nvm install 18.20.3
# 列出所有可安装的版本
nvm ls-remote # 所有版本
nvm ls-remote --lts # 只看 LTS 版本切换版本
# 切换(仅当前 Shell 会话生效)
nvm use 22
nvm use 18
nvm use --lts
# 设置默认版本(新开 Shell 自动使用)
nvm alias default 22
nvm alias default lts/iron
# 查看当前使用的版本
nvm current
node --version查看已安装版本
nvm ls # 列出本地所有已安装版本(标注当前和默认)输出示例:
v18.20.3
-> v22.4.0 # → 当前使用
default -> 22 (-> v22.4.0)
lts/* -> lts/iron (-> v22.4.0)
卸载版本
nvm uninstall 18.20.3.nvmrc — 项目级版本锁定
在项目根目录创建 .nvmrc 文件,声明项目所需的 Node 版本:
# .nvmrc
22或精确版本:
22.4.0
进入项目目录后执行 nvm use,自动读取 .nvmrc 切换到对应版本:
cd my-project
nvm use # 自动读取 .nvmrc,切换到 v22自动切换(推荐)
在 ~/.zshrc 或 ~/.bashrc 添加以下函数,进入目录时自动切换:
# 自动读取 .nvmrc 切换 Node 版本
autoload -U add-zsh-hook
load-nvmrc() {
local nvmrc_path
nvmrc_path="$(nvm_find_nvmrc)"
if [ -n "$nvmrc_path" ]; then
local nvmrc_node_version
nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")
if [ "$nvmrc_node_version" = "N/A" ]; then
nvm install
elif [ "$nvmrc_node_version" != "$(nvm version)" ]; then
nvm use
fi
fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc别名管理
# 创建自定义别名
nvm alias my-lts 22.4.0
# 使用别名
nvm use my-lts
# 删除别名
nvm unalias my-lts
# 查看所有别名
nvm alias内置别名:default(新 Shell 默认版本)、lts/*(最新 LTS)、node(最新版)。
全局包管理
不同 Node 版本的全局包相互独立,切换版本后需重新安装全局工具:
# 查看当前版本已安装的全局包
npm list -g --depth=0
# 从另一个版本迁移全局包(切换后执行)
nvm reinstall-packages 18 # 将 v18 的全局包安装到当前版本常用全局工具建议通过 npx 按需执行(无需安装),避免全局包版本混乱:
npx create-react-app my-app
npx tsc --init镜像加速(国内)
# 设置 Node.js 下载镜像(安装前设置)
export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node/
# 永久生效(写入 ~/.zshrc)
echo 'export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node/' >> ~/.zshrc常见问题
nvm: command not found
终端未加载 nvm 初始化脚本,检查 ~/.zshrc 或 ~/.bashrc 中是否有 nvm 的 source 行,执行 source ~/.zshrc 重新加载。
切换版本后 node 命令找不到
nvm use 22
which node # 应指向 ~/.nvm/versions/node/v22.x.x/bin/node若仍指向系统 Node(/usr/local/bin/node),说明 PATH 顺序有问题,确保 ~/.nvm/*/bin 在系统 PATH 之前。
Windows 路径含空格导致安装失败
nvm-windows 的安装目录和 Node 安装目录均不能包含空格,建议分别设为 C:\nvm 和 C:\nodejs。