nvm 每次打开终端都要加载大量 Shell 脚本,启动慢;fnm(Fast Node Manager)用 Rust 编写,几乎零延迟,原生支持 Apple Silicon,并通过 --use-on-cd 在进入项目目录时自动切换 .nvmrc 指定的版本。
一、安装 fnm
前提:Homebrew 已装好。
brew install fnm验证:
fnm --version二、配置 zsh 集成
编辑 ~/.zshrc,加入:
# fnm 用 npmmirror Node 镜像(国内加速)
export FNM_NODE_DIST_MIRROR="https://npmmirror.com/mirrors/node"
eval "$(fnm env --use-on-cd --shell zsh)"--use-on-cd:进入目录时自动读取.node-version或.nvmrc并切换版本FNM_NODE_DIST_MIRROR:让 Node 二进制走国内 npmmirror 镜像
生效:
source ~/.zshrc三、安装 Node.js
fnm install --lts # 最新 LTS
fnm install 24 # 指定大版本(自动选最新小版本)
fnm install 22.12.0 # 精确版本
fnm default 24 # 设置默认版本四、验证(重点查架构)
which node
node --version
node -p "process.arch"
# 预期输出:arm64输出 arm64 说明 Node 是 Apple Silicon 原生版本,不是经 Rosetta 2 运行的 x64 版本。
五、项目级自动切换
项目根目录创建 .nvmrc:
cd your-project
echo "24" > .nvmrc配了 --use-on-cd 后,cd 进目录会自动切到 Node 24。fnm 兼容 .nvmrc 和 .node-version 两种文件,方便团队里有 nvm 用户的场景。
六、常用命令
fnm list # 查看已安装版本
fnm list-remote # 查看可安装的远程版本
fnm install --lts # 安装最新 LTS
fnm install 22 # 安装指定大版本
fnm use 22 # 临时切换(当前 shell)
fnm default 22 # 设置默认版本
fnm current # 查看当前版本
fnm alias 22 default # 将版本设为别名
fnm exec --using=22 node -v # 用指定版本执行命令
fnm uninstall 18 # 卸载某个版本
fnm env # 输出 shell 环境变量脚本七、踩坑与排错
fnm: command not found:which fnm无输出则brew unlink fnm && brew link fnm。PATH 顺序:若同时装了 pyenv,fnm 段和 pyenv 段都需在
brew shellenv之后,pyenv shims 需显式置顶。npm 全局安装权限错误:报
EACCES时不要用sudo npm install -g:mkdir ~/.npm-global npm config set prefix ~/.npm-global echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.zshrc source ~/.zshrc需要 x64 版本:
fnm install 20 --arch=x64,fnm 会自动经 Rosetta 2 运行。
八、npm 国内镜像
npm config set registry https://registry.npmmirror.com
npm config get registry # 验证未经允许不得转载:编源视界 » Apple Silicon Mac用fnm管理Node.js多版本(含镜像加速)

编源视界