你是否遇到过这样的场景:老项目需要 Node 14,新项目要求 Node 18,来回切换版本要重装 Node?或者团队成员因为 Node 版本不一致,导致项目跑不起来?
NVM (Node Version Manager) 用一个纯 Shell 脚本就能解决这些问题。
NVM 是什么
NVM 是 Node.js 版本管理工具,核心代码只有一个 nvm.sh 文件。不需要编译,不依赖第三方库,通过修改环境变量实现多版本共存和快速切换。
主要功能:
- 安装和切换任意 Node.js 版本
- 每个终端窗口独立管理版本
- 支持
.nvmrc 文件自动切换
- 兼容 macOS、Linux、WSL
安装使用
安装方法
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
安装后重启终端,或执行:
source ~/.bashrc # 或 ~/.zshrc
常用命令
# 安装最新 LTS 版本
nvm install --lts
# 安装指定版本
nvm install 18.17.0
# 切换版本
nvm use 16
# 查看已安装版本
nvm list
# 设置默认版本
nvm alias default 18
实际应用场景
多项目版本管理
在项目根目录创建 .nvmrc 文件:
18.17.0
进入项目目录时执行:
nvm use
# 输出:Found '.nvmrc' with version <18.17.0>
# Now using node v18.17.0
版本升级迁移全局包
# 安装新版本并迁移旧版本的全局包
nvm install 20 --reinstall-packages-from=18
CI/CD 集成示例
# GitHub Actions 配置
- name: Setup Node
run: |
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm install
工作原理
NVM 的实现方式:
- 版本存储:所有 Node 版本安装在
~/.nvm/versions/node/ 目录
- PATH 劫持:修改
$PATH 环境变量,将选定版本的路径前置
- Shell 函数:
nvm 是一个 Shell 函数,每次调用在当前 Shell 环境生效
这种设计使得不同终端窗口可以使用不同的 Node 版本,互不干扰。
常见问题解决
国内下载慢的解决办法
export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node
nvm install 18
在脚本中使用 NVM
#!/bin/bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm use 18
node -v
与其他工具的对比
- NVM:纯 Shell,功能全面,社区活跃
- n:需要 Node 环境,更轻量
- fnm:Rust 编写,速度快
团队协作建议
- 统一版本:在项目中添加
.nvmrc 文件
- 文档说明:在 README 中注明 Node 版本要求
- 配合 engines:在
package.json 中声明:
{
"engines": {
"node": ">=18.0.0"
}
}
总结
NVM 用简单的方式解决了版本管理的核心问题。它的源码只有几千行 Shell 脚本,却被全球数百万开发者使用。
如果你还在为 Node 版本切换烦恼,可以试试 NVM。
关注《云栈大前端》,获取更多前端工程化工具和开源项目解析。
📦 项目地址
GitHub: https://github.com/nvm-sh/nvm
标签:#NVM #Github #Node.js版本管理 #前端工程化 #开发工具 #Shell脚本 #多版本切换