多版本管理
作为Node.js开发者,你一定会遇到这种情况:
- 这个项目用的是Node.js 16
- 那个项目用的是Node.js 20
- 还有个项目要用最新的Node.js 22
怎么办?来回卸载安装?这时候你就需要一个版本管理器了!这篇教程给你介绍几款主流的Node.js版本管理工具。
一、 为什么需要版本管理?
1. 不同项目需要不同版本
- 老项目用Node.js 14,新项目用Node.js 20
- 某些npm包只兼容特定版本
- 升级Node.js怕影响现有项目
2. 快速切换版本
一个命令就能切换:
node use 16 node use 18 node use 20
3. 尝试新版本
想试试Node.js的最新功能?装上试试,不满意就切回来。
二、 nvm - 最流行的选择
nvm是Node.js版本管理的老大,全世界开发者都在用。
安装nvm(macOS/Linux)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
或者用wget:
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
安装nvm(Windows)
Windows用户用nvm-windows:
- 下载:https://github.com/coreybutler/nvm-windows/releases
- 安装nvm-setup.exe
配置环境变量
安装完成后,把下面加到 ~/.bashrc 或 ~/.zshrc:
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
然后:
source ~/.bashrc
nvm常用命令
查看已安装的版本
nvm list
安装最新版
nvm install node
安装LTS版
nvm install --lts
安装指定版本
nvm install 20 nvm install 18 nvm install 16
切换版本(当前终端生效)
nvm use 20
设置默认版本
nvm alias default 20
查看当前使用版本
nvm current
卸载指定版本
nvm uninstall 16
查看可安装版本
nvm ls-remote
使用示例
列出已安装版本
$ nvm list v18.17.0 v20.5.0
- v20.6.0 (currently using)
切换到16
$ nvm use 16 Now using node v16.20.2 (64-bit)
切换到20
$ nvm use 20 Now using node v20.6.0 (64-bit)
设置默认版本
$ nvm alias default 18 Default node version set to v18.17.0
三、 fnm - Rust版,速度更快
fnm是Rust写的,比nvm快很多,支持Windows、macOS、Linux。
安装fnm
macOS / Linux
curl -fsSL https://fnm.vercel.app/install | bash
Windows (用PowerShell)
winget install fnm
或者用scoop:
scoop install fnm
配置
把下面加到 ~/.zshrc 或 ~/.bashrc:
eval "$(fnm env)"
fnm常用命令
安装版本
fnm install 20 fnm install 18
列出已安装版本
fnm list
切换版本
fnm use 20
设置默认版本
fnm default 20
当前shell使用版本
fnm shell 20
四、 n - 简单直接
n是Node.js官方推荐的版本管理工具,简单到没朋友。
安装n
需要先装Node.js(讽刺但真实)
用npm全局安装
npm install -g n
或者用curl安装
curl -L https://bit.ly/n-install | bash
n常用命令
安装最新版
n node
安装LTS版
n lts
安装指定版本
n 20 n 18
切换版本
n 20
列出已安装版本
n list
卸载版本
n prune # 删除除当前版本外的所有版本
特点
- 简单!一个n命令搞定一切
- 安装的Node.js在 /usr/local/bin
- 不需要配置,直接用
五、 Windows用户的其他选择
1. nvm-windows
和nvm几乎一样的用法:
nvm install 20 nvm use 20 nvm list
2. Volta
Rust写的,跨平台:
安装
curl https://get.volta.sh | bash
安装Node.js
volta install node@20 volta install node@18
切换版本
volta pin node@18
3. asdf
如果你的项目还用到Python、Ruby等,可以用asdf统一管理:
安装asdf
git clone https://github.com/asdf-vm/asdf.git ~/.asdf
添加Node.js插件
asdf plugin add nodejs
安装版本
asdf install nodejs 20.6.0
设置版本
asdf global nodejs 20.6.0
六、 .nvmrc 文件 - 项目自动切换版本
在项目根目录创建一个 .nvmrc 文件:
18
然后每次 cd 进这个目录,nvm会自动切换到对应版本:
cd my-project # 自动切换到Node.js 18 node -v
七、 package.jsonengines字段
在package.json里指定Node.js版本要求:
{ "engines": { "node": ">=16.0.0 <21.0.0" } }
npm install时会警告,但不强制。
八、 总结对比
| 工具 | 平台 | 特点 |
|---|---|---|
| nvm | Unix/Linux/macOS | 最流行,生态最好 |
| nvm-windows | Windows | Windows版nvm |
| fnm | 全平台 | Rust编写,速度快 |
| n | Unix/Linux/macOS | 简单直接 |
| Volta | 全平台 | 现代化,Rust编写 |
| asdf | 全平台 | 多语言统一管理 |
推荐:
- macOS/Linux: nvm 或 fnm
- Windows: nvm-windows 或 fnm
- 追求简单: n
九、 常见问题
1. nvm command not found
确保环境变量配置正确:
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
2. npm全局包在不同版本间不共享
每个Node.js版本有自己的node_modules,互不影响。
3. Node.js版本号含义
- v20.6.0:主版本.次版本.补丁版本
- LTS:长期支持版,稳定
- Current:最新功能版
学会版本管理,Node.js开发更轻松!有问题评论区见!