从 Windows 平滑过渡到 Mac,第一件事就是配置开发环境。
在 Windows 时我就习惯了用 nvm 管理 Node.js 版本,来到 Mac 后发现很多人居然还在用 brew install node 装一个版本死磕,或者手动卸载重装...太折腾了!
其实 Mac 上 nvm 用起来更丝滑。今天把这套 Mac M4(Apple Silicon)标准 Node 多版本管理方案 分享给大家,让 Windows 用户无缝切换,一步到位告别版本混乱。
一、为什么需要 nvm?
想象一下这些场景:
场景 1:老项目用的是 Node 14,新项目要求 Node 20,你怎么同时开发?
场景 2:全局安装了一个版本的 Node,结果某个依赖包死活不兼容,想降级却发现不知道怎么卸载?
场景 3:团队成员用不同 Node 版本,CI 环境又是另一个版本,偶现的 bug 真让人头秃?
nvm 就是来救你的:
✅ 多版本共存:想装几个装几个
✅ 秒级切换:一条命令搞定
✅ 项目隔离:不同项目自动用不同版本
✅ 零侵入:不污染系统环境
二、安装前准备
确保你已经安装了 Homebrew。在终端执行:
brew --version
如果输出了版本号,恭喜你可以继续了。如果没有,请先安装 Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
三、通过 Homebrew 安装 nvm
第一步:安装 nvm
brew install nvm
等待安装完成...
第二步:创建 nvm 目录(重要!)
这个目录用来存放不同版本的 Node.js:
mkdir -p ~/.nvm
第三步:配置 Shell 环境
Mac M4 默认使用 zsh,我们需要编辑 ~/.zshrc 文件:
nano ~/.zshrc
在文件末尾添加以下内容(复制粘贴即可):
# NVM 配置
export NVM_DIR="$HOME/.nvm"
[ -s "$(brew --prefix nvm)/nvm.sh" ] && \. "$(brew --prefix nvm)/nvm.sh"
[ -s "$(brew --prefix nvm)/etc/bash_completion.d/nvm" ] && \. "$(brew --prefix nvm)/etc/bash_completion.d/nvm"
保存后按 Ctrl + O,回车确认,然后 Ctrl + X 退出。
最后让配置生效:
source ~/.zshrc
第四步:验证安装
nvm -v
如果输出了版本号(比如 0.40.0),说明安装成功!
四、安装 Node.js 版本
查看所有可用版本
nvm ls-remote
输出会很长,从最早的版本到最新的都有...
只看 LTS 版本(推荐)
LTS(Long Term Support)是长期支持版本,稳定可靠:
nvm ls-remote --lts
安装最新 LTS 版本
nvm install --lts
安装指定版本
比如安装 Node 18、20、22 三个主流版本:
nvm install 18
nvm install 20
nvm install 22
或者安装精确版本:
nvm install 20.11.1
推荐策略:安装三个版本覆盖大部分场景
- Node 18:维护老项目
- Node 20:主流稳定开发
- Node 22:新项目尝鲜
五、查看和切换版本
查看已安装的版本
nvm ls
示例输出:
-> v20.11.1
v18.19.0
v22.0.0
default -> 20
system
箭头 -> 表示当前正在使用的版本。
切换版本
临时切换(当前终端有效):
nvm use 18
切换到最新 LTS:
nvm use --lts
设置默认版本
这样每次打开新终端都会自动使用这个版本:
nvm alias default 20
查看当前版本
node -v
或者:
nvm current
六、项目级自动切换(高级技巧)
这是我最喜欢的功能!
在项目根目录创建 .nvmrc 文件:
echo "24.13.1" > .nvmrc
以后每次进入这个项目,只需要执行:
nvm use
就会自动切换到 Node 20!
团队协作神器:把 .nvmrc 提交到 Git,团队成员 clone 项目后执行 nvm use,保证大家 Node 版本一致!
七、卸载 Node 版本
比如要卸载 Node 18:
nvm uninstall 18
或者卸载精确版本:
nvm uninstall 18.19.0
八、Apple Silicon(M4)特别说明
M4 芯片是 ARM 架构,不用担心!nvm 会自动识别并安装 darwin-arm64 版本。
验证一下:
node -p process.arch
应该输出:
arm64
不需要 Rosetta 转译,原生性能满血运行!
九、避坑指南(非常重要!)
❌ 不要混用包管理器
如果你用了 nvm,就不要再执行:
brew install node
这会导致冲突!检查一下你的 Node 来自哪里:
which node
正确输出应该是:
~/.nvm/versions/node/v20.11.1/bin/node
错误输出(说明混用了):
/opt/homebrew/bin/node
如果发现混用了,卸载 brew 安装的版本:
brew uninstall node
✅ 推荐做法
只用 nvm 管理 Node,Homebrew 只用来安装 nvm。
十、常用命令速查表
| 功能 | 命令 |
|---|---|
| 查看所有可安装版本 | nvm ls-remote |
| 只看 LTS 版本 | nvm ls-remote --lts |
| 安装最新 LTS | nvm install --lts |
| 安装指定版本 | nvm install 20 |
| 查看已安装版本 | nvm ls |
| 切换版本 | nvm use 20 |
| 设置默认版本 | nvm alias default 20 |
| 卸载版本 | nvm uninstall 18 |
| 查看当前版本 | node -v 或 nvm current |
十一、完整配置示例
一套完整的配置流程,复制粘贴即可:
# 1. 安装 nvm
brew install nvm
# 2. 创建目录
mkdir -p ~/.nvm
# 3. 配置环境(手动编辑 ~/.zshrc,添加前文提到的配置)
# 然后执行:
source ~/.zshrc
# 4. 安装三个常用版本
nvm install 18
nvm install 20
nvm install 22
# 5. 设置默认版本
nvm alias default 20
# 6. 验证
node -v
nvm ls
十二、总结
配置完成后的结构是这样的:
Mac M4
└─ Homebrew
└─ nvm
├─ Node 18(老项目)
├─ Node 20(默认,主力开发)
└─ Node 22(新项目)
这套方案的优势:
✅ 清晰隔离:每个 Node 版本独立管理
✅ 随时切换:秒级响应,无感知切换
✅ 团队协作:.nvmrc 保证版本一致
✅ 原生支持:M4 芯片 ARM64 完美运行
✅ 可逆操作:随时卸载,不留痕迹
以后再也不会因为 Node 版本问题浪费时间了。
如果你觉得这篇文章有帮助,欢迎关注公众号 FishTech Notes,一块交流使用心得!