nvm:一行命令切换 Node.js 版本

正文顶部截图

做前端开发的人,大概率遇到过这种场景:项目 A 跑在 Node 18 上,项目 B 依赖 Node 20,切来切去总出问题。nvm 就是为了解决这个需求而生的。

nvm 全称 Node Version Manager,是一个命令行工具,让你在同一台机器上安装和切换不同版本的 Node.js。它在 GitHub 上有 93,000 多个 Star,算是 Node 生态里最基础也最常用的工具之一。

README区域截图

安装

安装过程一行命令搞定。macOS 或 Linux 系统下,打开终端执行:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.5/install.sh | bash

脚本会把 nvm 仓库克隆到 ~/.nvm 目录,并自动在你的 shell 配置文件里添加必要的环境变量。装完之后重启终端,或者手动执行 source ~/.zshrc(bash 用户用 source ~/.bashrc),就能用了。

验证安装是否成功:

command -v nvm

输出 nvm 就说明没问题。注意 which nvm 是查不到的,因为 nvm 是一个 shell 函数,不是独立的可执行文件。

基本用法

安装一个 Node 版本,只需要指定版本号:

nvm install 20

这条命令会下载 Node 20 的最新版本并安装。切换版本也很直接:

nvm use 18

切换之后,当前终端会话里的 nodenpm 就指向新版本了。每个新打开的终端会使用默认版本,用 nvm alias default 20 可以设置默认值。

查看本地已安装的版本:

nvm ls

查看远程所有可用版本:

nvm ls-remote

LTS 支持

Node.js 有长期支持版本(LTS)的发布节奏。nvm 对此做了专门适配,可以直接用 lts/* 指代最新 LTS 版本,或者用 lts/argon 这样的名称指定某个 LTS 系列:

nvm install --lts
nvm use --lts

每次本地 nvm 连接到 nodejs.org 时,会自动更新所有可用 LTS 系列的别名,存在 $NVM_DIR/alias/lts 目录下。这些文件由 nvm 管理,不建议手动修改。

迁移全局包

升级 Node 版本后,之前全局安装的 npm 包不会自动带过来。nvm 提供了一个参数可以在安装新版本时自动迁移:

nvm install --reinstall-packages-from=current 'lts/*'

这条命令会先安装最新的 LTS 版本,然后把当前版本的全局包重新安装到新版本里。如果需要同时更新 npm,加上 --latest-npm 标志:

nvm install --reinstall-packages-from=default --latest-npm 'lts/*'

.nvmrc 文件

在项目根目录放一个 .nvmrc 文件,写入版本号,就可以让进入该目录时自动切换到对应版本。配合 shell 配置可以实现进入目录自动执行 nvm use,不需要每次手动敲命令。

离线安装

在没有网络的环境下,只要之前下载过某个版本的 Node,就可以用 --offline 标志安装:

nvm install --offline 14.7.0

这个功能在内网服务器或者网络不稳定的场景下比较实用。

兼容性

nvm 支持所有 POSIX 兼容的 shell(sh、dash、ksh、zsh、bash),覆盖 Unix、macOS 和 Windows WSL 环境。Windows 用户如果不想走 WSL,也可以用 nvm-windows、nodist 等替代方案,但这些不是 nvm 官方维护的项目。

需要注意的是,nvm 不支持 Fish shell。Fish 用户可以考虑 nvm.fish 等社区方案。

nvm-windows、nodist 等替代方案,但这些不是 nvm 官方维护的项目。

需要注意的是,nvm 不支持 Fish shell。Fish 用户可以考虑 nvm.fish 等社区方案。

更多推荐