当前位置: 首页 > news >正文

Mac + nvm:程序员必须掌握的 Node 版本管理神技

从 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

brewinstallnvm

等待安装完成…

第二步:创建 nvm 目录(重要!)

这个目录用来存放不同版本的 Node.js:

mkdir-p ~/.nvm

第三步:配置 Shell 环境

Mac M4 默认使用 zsh,我们需要编辑~/.zshrc文件:

nano~/.zshrc

在文件末尾添加以下内容(复制粘贴即可):

# NVM 配置exportNVM_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 版本

nvminstall--lts

安装指定版本

比如安装 Node 18、20、22 三个主流版本:

nvminstall18nvminstall20nvminstall22

或者安装精确版本:

nvminstall20.11.1

推荐策略:安装三个版本覆盖大部分场景

  • Node 18:维护老项目
  • Node 20:主流稳定开发
  • Node 22:新项目尝鲜

五、查看和切换版本

查看已安装的版本

nvmls

示例输出:

-> v20.11.1 v18.19.0 v22.0.0 default -> 20 system

箭头->表示当前正在使用的版本。

切换版本

临时切换(当前终端有效):

nvm use18

切换到最新 LTS:

nvm use --lts

设置默认版本

这样每次打开新终端都会自动使用这个版本:

nvmaliasdefault20

查看当前版本

node-v

或者:

nvm current


六、项目级自动切换(高级技巧)

这是我最喜欢的功能!

在项目根目录创建.nvmrc文件:

echo"24.13.1">.nvmrc

以后每次进入这个项目,只需要执行:

nvm use

就会自动切换到 Node 20!

团队协作神器:把.nvmrc提交到 Git,团队成员 clone 项目后执行nvm use,保证大家 Node 版本一致!


七、卸载 Node 版本

比如要卸载 Node 18:

nvm uninstall18

或者卸载精确版本:

nvm uninstall18.19.0

八、Apple Silicon(M4)特别说明

M4 芯片是 ARM 架构,不用担心!nvm 会自动识别并安装darwin-arm64版本。

验证一下:

node-p process.arch

应该输出:

arm64

不需要 Rosetta 转译,原生性能满血运行!


九、避坑指南(非常重要!)

❌ 不要混用包管理器

如果你用了 nvm,就不要再执行

brewinstallnode

这会导致冲突!检查一下你的 Node 来自哪里:

whichnode

正确输出应该是:

~/.nvm/versions/node/v20.11.1/bin/node

错误输出(说明混用了):

/opt/homebrew/bin/node

如果发现混用了,卸载 brew 安装的版本:

brew uninstallnode

✅ 推荐做法

只用 nvm 管理 Node,Homebrew 只用来安装 nvm。


十、常用命令速查表

功能命令
查看所有可安装版本nvm ls-remote
只看 LTS 版本nvm ls-remote --lts
安装最新 LTSnvm install --lts
安装指定版本nvm install 20
查看已安装版本nvm ls
切换版本nvm use 20
设置默认版本nvm alias default 20
卸载版本nvm uninstall 18
查看当前版本node -vnvm current

十一、完整配置示例

一套完整的配置流程,复制粘贴即可:

# 1. 安装 nvmbrewinstallnvm# 2. 创建目录mkdir-p ~/.nvm# 3. 配置环境(手动编辑 ~/.zshrc,添加前文提到的配置)# 然后执行:source~/.zshrc# 4. 安装三个常用版本nvminstall18nvminstall20nvminstall22# 5. 设置默认版本nvmaliasdefault20# 6. 验证node-v nvmls

十二、总结

配置完成后的结构是这样的:

Mac M4 └─ Homebrew └─ nvm ├─ Node 18(老项目) ├─ Node 20(默认,主力开发) └─ Node 22(新项目)

这套方案的优势

清晰隔离:每个 Node 版本独立管理

随时切换:秒级响应,无感知切换

团队协作.nvmrc保证版本一致

原生支持:M4 芯片 ARM64 完美运行

可逆操作:随时卸载,不留痕迹

以后再也不会因为 Node 版本问题浪费时间了。


如果你觉得这篇文章有帮助,欢迎关注公众号 FishTech Notes,一块交流使用心得!

http://www.jsqmd.com/news/403391/

相关文章:

  • 上海之江生物科技股份有限公司前端开发工程师职位深度解析
  • Kotlin 数据类与密封类
  • 2.22学习
  • Julia 流程控制
  • 大数据工程师必知:数据生命周期的5大核心环节
  • Bootstrap4 表单
  • 提示工程架构师必知:AI提示系统伦理审查与社会责任的关系
  • Flink异步IO:大数据处理的外部系统集成
  • 大数据时代:为什么描述性分析是数据科学的第一步?
  • Power BI性能调优:处理TB级数据的秘诀
  • 大数据领域的水利科技数据预警
  • P3371 【模板】单源最短路径(弱化版)
  • 金融领域强化学习在多资产类别动态交易执行中的应用
  • 突破数据瓶颈:SSCL-AMC如何用自监督学习革新无线信号调制识别
  • 数据库算子与布隆过滤器
  • Linux mint
  • Python 内置函数详解
  • 现成Comsol流体流动模型:满足各类流体仿真参考需求
  • Servlet 文件上传
  • 洛谷 P3377:[模板] 可并堆 1 ← 左偏树
  • 二分图知识点杂记
  • jQuery 简介
  • MATLAB滑动计算声发射b值或ib值m文件源码资料包(动态最值或全局最值,计算窗口、滑动窗口...
  • 提示工程架构师如何评估AI提示系统效果监测的效果?
  • 深入解析长沙景嘉微电子股份有限公司前端开发工程师(AI与数字化)岗位:技术全景与面试指南
  • 并行多智能体系统的协调测试实战:从轨迹捕获到CI/CD的六个步骤
  • 20260222
  • 跨端开发的技术纵深:中控技术前端工程师岗位全景解析
  • 深耕技术,智绘未来:解析合众思壮应用软件开发岗的核心能力与挑战
  • Python asyncio.gather returns a future aggregating results from the given coroutines/futures.