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

做前端开发的人,大概率遇到过这种场景:项目 A 跑在 Node 18 上,项目 B 依赖 Node 20,切来切去总出问题。nvm 就是为了解决这个需求而生的。
nvm 全称 Node Version Manager,是一个命令行工具,让你在同一台机器上安装和切换不同版本的 Node.js。它在 GitHub 上有 93,000 多个 Star,算是 Node 生态里最基础也最常用的工具之一。

安装
安装过程一行命令搞定。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
切换之后,当前终端会话里的 node 和 npm 就指向新版本了。每个新打开的终端会使用默认版本,用 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 等社区方案。
更多推荐



所有评论(0)