Nodejs 版本切换,“手动挡”终于可以换“自动挡”了。

多年以来,在 Windows 上做开发都是用的 nvm-windows 来管理 Nodejs 版本。

nvm版本管理工具

这个工具的安装比较简单,下载安装包,下一步,下一步就安装好了。

但是它有个臭毛病,每次切换版本都会唤醒 UAC 权限控制,简直不堪其扰。

在看了它的源码后,稍微改了改,编译后替换了 nvm.exe 文件,总算解决了这个问题,所以这些年用下来还算省心。

在使用 nvm 的过程中,其实也遇到过很多次问题,比如切换到老项目时,忘记切换到老版本的 Node,导致安装依赖时报错;或者某个项目,时间久了就忘记当时用的哪个版本的 Node,从而陷入迷茫。

之前写过一篇在 Linux 上折腾 Node 版本的文章: Linux 系统使用 fnm 安装 Nodejs 任意版本,用的是 fnm,既然 fnm 支持 Linux、Windows、macOS,那为何不把 Windows 上也换成 fnm 呢,当时嫌麻烦就一直没搞。

转眼一年过去了,闲暇时逛技术论坛,看到有人写从 nvm 迁移到 fnm 的文章,又激起了我的兴趣。

行吧,索性我也研究一下,换个工具尝尝鲜,试一试 “自动驾驶”。

安装 fnm

fnm 是使用 Rust 语言开发的一个 Nodejs 版本管理工具。

fnm 官方下载地址:https://github.com/Schniz/fnm/releases

下载最新的 Windows 平台二进制压缩包:fnm-windows.zip,解压后会得到一个 fnm.exe 程序文件。

打开文件资源管理器,再打开 C: 盘,新建文件夹 dev,在 dev 文件夹下新建文件夹 fnm-windows,把刚解压获得的 fnm.exe 文件放入 C:\dev\fnm-windows 文件夹中。

fnm安装目录

以 Windows 10 或 Windows 11 为例,在任务栏 “开始” 按钮上鼠标右键,选择 “系统” 菜单。

开始菜单

在弹出的系统设置界面上点击 “高级系统设置”。

高级系统设置

在系统属性界面上点击 “环境变量”。

环境变量

在环境变量界面上的 “系统变量” 里找到 “Path” 并双击打开。

环境变量

在编辑环境变量界面上点 “新建”,复制 C:\dev\fnm-windows 并粘贴到环境变量中。

环境变量

点击 “确定”,“确定”,“确定”,fnm 就安装配置好了。

打开 cmd 命令行工具,输入 fnm --version,出现版本信息,则表示安装成功。

验证fnm安装

配置 fnm “自动驾驶”

只安装好 fnm 还不够,还需要让系统能够识别到通过 fnm 安装的 Nodejs。

并且 fnm 还额外支持在切换到项目目录下时,自动切换当前项目使用的 Node 版本。

看了官方文档的描述:

CMD配置fnm

讲的不是很透彻,经过仔细摸索,总算摸清了门道。

C:\dev\fnm-windows 目录下新建文件 autorun.cmd,把下面这段代码粘贴进去后保存。

1
2
3
4
5
6
@echo off
:: for /F will launch a new instance of cmd so we create a guard to prevent an infnite loop
if not defined FNM_AUTORUN_GUARD (
set "FNM_AUTORUN_GUARD=AutorunGuard"
FOR /f "tokens=*" %%z IN ('fnm env --use-on-cd') DO CALL %%z
)

接着打开 “注册表编辑器”(按 Win + R 键,输入 regedit 后回车),找到:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor

Command Processor 上点击右键,选择 “新建” > “字符串值”。

配置注册表

接着数值名称填 AutoRun,数值数据填 C:\dev\fnm-windows\autorun.cmd,点击 “确定” 并关闭注册表。

配置自动运行脚本

到这里,整个流程就配置完毕。

安装 Nodejs

现在我们通过 fnm 安装 Nodejs。

我这里想安装 Nodejs v20.19.1 版本,则执行如下命令:

1
fnm install 20.19.1

速度很快,一会就安装好了。

接着运行如下命令,就可以看到安装好的 Node 了:

1
fnm list

运行如下命令,验证 Node 是否可用:

1
node -v

默认情况下,Node 和 npm 都会一起安装。

如果平时使用 pnpm,则执行以下命令安装 pnpm:

1
npm i -g pnpm

安装Nodejs

至此,Windows 系统配置 fnm 来安装 Nodejs 就顺利实现了。

补充

fnm 在项目下自动切换 Node 版本的功能,需要项目根目录下有个 .node-verson.nvmrc 文件,里面填写 Node 版本。

比较简单的方式是在项目根目录下执行:

1
node -v > .node-version

下面通过一个例子演示 fnm 自动切换版本功能:

fnm自动切换版本

End