Node 版本管理:nvm、fnm 与 .nvmrc
为什么需要版本管理
一个项目锁在 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 版本 —— 这比全局装一个固定版本更靠谱。
本文为个人学习记录,可能存在错误或已过时,仅供参考。
← 返回笔记列表