多版本管理

作为Node.js开发者,你一定会遇到这种情况:

怎么办?来回卸载安装?这时候你就需要一个版本管理器了!这篇教程给你介绍几款主流的Node.js版本管理工具。

一、 为什么需要版本管理?

1. 不同项目需要不同版本

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:

  1. 下载:https://github.com/coreybutler/nvm-windows/releases
  2. 安装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

切换到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 # 删除除当前版本外的所有版本

特点

五、 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 全平台 多语言统一管理

推荐

九、 常见问题

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版本号含义

学会版本管理,Node.js开发更轻松!有问题评论区见!