NVM 安装与多版本 Node.js 管理
NVM (Node Version Manager) 是一个非常实用的 Node.js 版本管理工具。在日常开发与运维工作中,不同的项目往往依赖不同版本的 Node.js,直接全局安装极易造成版本冲突。NVM 可以帮助我们在同一台机器上快速安装、切换和管理多个不同版本的 Node.js。
本文记录了在 Linux 和 macOS 环境下安装 NVM 的标准步骤、环境配置以及日常高频使用的命令。
1. 安装 NVM
在线一键安装 (Linux / macOS)
在终端中执行以下命令(会从 GitHub 下载安装脚本并自动执行):
# 使用 curl 方式安装
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
国内加速下载
如果遇到 GitHub 连接超时或网络受限,可以使用 gitee 镜像站下载:
git clone https://gitee.com/mirrors/nvm.git ~/.nvm && cd ~/.nvm && git checkout v0.39.7
2. 配置环境变量
安装脚本执行完成后,需要将 NVM 路径写入对应的 Shell 配置文件中。
macOS / Linux 环境变量配置
请根据您使用的 Shell 终端(Bash 或 Zsh),在对应的配置文件(~/.bashrc 或 ~/.zshrc)末尾添加以下内容:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # 加载 nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # 加载 nvm bash 自动补全
保存配置文件后,使配置立即生效:
# 如果使用 zsh
source ~/.zshrc
# 如果使用 bash
source ~/.bashrc
验证安装
# 查看 nvm 版本
nvm --version
输出类似 0.39.7 即代表安装和环境变量配置成功!
3. NVM 常用运维命令
Node.js 安装与卸载
# 1. 列出官方所有可供安装的 Node.js 版本(远程版本)
nvm ls-remote
# 2. 安装指定的 Node.js 版本 (例如最新的 LTS 长期支持版)
nvm install --lts
# 3. 安装特定版本
nvm install 18.20.0
nvm install 20.11.0
# 4. 卸载不需要的 Node.js 版本
nvm uninstall 18.20.0
Node.js 版本查看与切换
# 1. 查看本地已安装的所有 Node.js 版本
nvm ls
# 2. 切换当前终端所使用的 Node.js 版本
nvm use 20.11.0
# 3. 设置默认的 Node.js 版本(每次打开新终端都会默认使用该版本)
nvm alias default 20.11.0
# 4. 临时在不加载环境变量的情况下运行特定版本的 Node
nvm run 18.20.0 app.js
4. 生产调优与常见问题解决
1. 配置 Node.js 与 npm 淘宝镜像(国内加速)
由于 Node 官方源在国内下载可能较慢,建议配置 NVM 使用淘宝镜像源下载:
在 ~/.bashrc 或 ~/.zshrc 中添加:
export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node/
保存后运行 source 重新加载。
2. 切换 Node 版本后,全局安装的 npm 包丢失?
NVM 的版本隔离是非常彻底的,每个 Node.js 版本都拥有自己独立的全局 node_modules 目录。
如果您在升级 Node.js 版本时想一并继承旧版本的全局包,可以使用 --reinstall-packages-from 参数:
# 安装 Node v20 的同时,自动把 v18 全局安装的 pm2、yarn 等工具克隆过来
nvm install v20.11.0 --reinstall-packages-from=v18.20.0
3. macOS 下提示 nvm: command not found?
这通常是因为 macOS 默认使用的 Shell 是 Zsh,而安装脚本有时仅将环境变量写入了 ~/.bash_profile。
- 解决办法:手动将 步骤 2 中的配置代码拷贝到
~/.zshrc文件末尾,并执行source ~/.zshrc即可。