抛弃 NVM,拥抱 fnm:用 Rust 打造极速且纯净的 Node 版本管理

9 阅读3分钟

抛弃 NVM,拥抱 fnm:用 Rust 打造极速且纯净的 Node 版本管理

如果你像我一样,主力终端是 Fish Shell,并且对系统的整洁度有极高的要求,那么传统的 nvm 绝对会让你感到痛苦。nvm 作为一个庞大的 Bash 脚本,不仅拖慢了终端的启动速度,而且在 Fish 中还需要各种套壳插件(比如 bass)来做兼容,稍有不慎就会遇到环境变量路径打架的烂摊子。

为了彻底告别这些烦恼,我转向了 fnm (Fast Node Manager) 。它完全基于 Rust 编写,速度极快,开箱原生支持 Fish,并且它的文件边界异常清晰,绝不偷偷污染系统目录。

这篇博客将记录 fnm 的完整生命周期:从极简安装、优雅使用,到如何做到“连根拔起”的彻底卸载。

🚀 一、 极速安装与注入 Fish 灵魂

作为 Arch Linux 用户,安装过程异常简单,官方仓库直接拉取即可:

Bash

# 使用 paru (或 yay) 安装 fnm 本身
paru -S fnm

装完本体后,只需要一行命令,将 fnm 的初始化逻辑写入 Fish 的配置文件:

Bash

# 注入灵魂:--use-on-cd 是个神级参数(后面详述)
echo 'fnm env --use-on-cd | source' >> ~/.config/fish/config.fish

重新加载终端(exec fish),输入 fnm --version。看到版本号输出,地基就打好了。

💡 二、 核心使用与架构师巧思

fnm 的命令逻辑和 nvm 几乎零替换成本。

1. 基础环境搭建

Bash

# 下载最新的长期支持版 (LTS)
fnm install --lts

# 将其设为全局兜底的默认版本
fnm default lts-latest

# 让当前终端立刻用上它
fnm use lts-latest

2. 神级体验:无感切换 Node 版本

还记得安装时加的 --use-on-cd 参数吗? 在实际开发跨平台应用或前端项目时,你只需要在项目根目录建一个 .node-version(或 .nvmrc)文件,里面写上版本号(例如 22)。 以后只要你 cd 进这个目录,fnm 就会在毫秒间自动无声无息地为你切换好当前目录所需的 Node 环境。完全不需要手动执行 use 命令!

3. 环境调优:镜像源与 pnpm

Node 环境装好后,剩下的就是原汁原味的 npm 配置了:

Bash

# 一键切换淘宝镜像源,拉取包速度起飞
npm config set registry https://registry.npmmirror.com/

# 强烈建议全局安装 pnpm,用硬链接代替 npm 的黑洞式复制,拯救硬盘
npm install -g pnpm

🗑️ 三、 终极掌控:如何干净地彻底卸载

一个优秀的工具必须能干净地离开。如果未来你想换其他工具,或者想把开发环境彻底重置,只需三步即可让 fnm 从你的系统中彻底消失,连灰都不留。

1. 卸载可执行文件

Bash

paru -Rns fnm

2. 摧毁数据目录(关键) Linux 包管理器不会碰你的个人数据。fnm 下载的所有 Node 版本都静静地躺在你的主目录里。扬了它:

Bash

rm -rf ~/.local/share/fnm

3. 清理配置文件残留 打开 ~/.config/fish/config.fish,把你当初加进去的那行 fnm env --use-on-cd | source 删掉(或者执行下面的命令):

Bash

sed -i '/fnm env/d' ~/.config/fish/config.fish

最后 exec fish 刷新终端,你的系统就又恢复到了从未见过 Node.js 的纯洁状态。