Node 版本管理:nvm、fnm 与 .nvmrc

2026 / 10 / 25#node#nvm#fnm

为什么需要版本管理

一个项目锁在 Node 18(老依赖),另一个要 22(新语法),系统里只能装一个 —— 所以要么改 PATH,要么用版本管理器。

三者不是同一个东西

工具 平台 特点
nvm Linux / macOS 最早的方案,shell 脚本,切换快
nvm-windows Windows 和上面是两个独立项目,命令相似但实现完全不同,靠切换软链接,切换较慢
fnm 全平台 Rust 写,快,支持进入目录自动切换

在 Windows 上搜 nvm 教程时最容易踩的坑,就是照着 Linux 的文档敲 nvm-windows 上不存在的命令。

.nvmrc:把版本写进仓库

项目根目录放一个 .nvmrc:

22

然后 nvm use(fnm 是 fnm use)会自动读它。这样换电脑、换同事,不需要口头交代"用 22 啊"。

fnm 还能更进一步,在 shell 配置里加:

eval "$(fnm env --use-on-cd)"

之后 cd 进有 .nvmrc 的目录就自动切版本。

全局包不跟着切换

这是最容易被误判的一点:用 Node 18 装的全局包,切到 22 就没了。因为每个版本有独立的 node_modules 前缀。

所以别依赖全局安装的 CLI。正确做法是把它们放进项目依赖,用 npx 调用,或者用 corepack 管包管理器版本:

corepack enable
corepack prepare pnpm@9 --activate

corepack 会读 package.json 里的 packageManager 字段,保证所有人用同一个 pnpm/yarn 版本 —— 这比全局装一个固定版本更靠谱。

本文为个人学习记录,可能存在错误或已过时,仅供参考。
← 返回笔记列表