macOS开发环境自动化核心是“环境即代码”,通过Brewfile声明工具链、dotfiles仓库集中管理配置、shell脚本驱动全流程,实现可复现、可迁移、可验证的备份与安装。
macos 上实现开发工具的自动化备份与安装配置,关键不是“把软件装一遍”,而是把安装逻辑和配置状态都变成可复现、可迁移、可验证的代码。整个过程围绕“环境即代码”(infrastructure as code)展开,不依赖手动点击或临时脚本,真正达成“换机三小时,开发照常跑”。
用声明式清单统一管理工具链
Homebrew 的 Brewfile 是最轻量又最可靠的起点。它像一份“软件采购单”,明确列出所有 CLI 工具、GUI 应用甚至字体,支持版本锁定和分类标记:
- 在项目根目录或
~/.dotfiles/下创建Brewfile,内容示例:
tap "homebrew/bundle" tap "homebrew/cask-versions" brew "git" brew "node" brew "rustup" cask "visual-studio-code" cask "rectangle" cask "stats"
- 执行
brew bundle install即可全自动拉取、安装、更新;若已存在则跳过,天然支持断点续跑 - 配合
brew bundle dump可随时导出当前环境快照,用于备份或跨设备同步
把配置文件纳入版本控制并符号链接
开发工具的“灵魂”不在二进制本身,而在其配置文件——比如 VS Code 的 settings.json、Zsh 的 .zshrc、Git 的 .gitconfig。这些必须集中托管、自动部署:
部署和使用军舰的 macOS Automator 自动化服务集合。包含 5 个实用工作流:PDF转JPG、PNG重命名并转JPG、图像拼接、解压RAR、顺序命名图像文件。一键安装所有服务到 ~/Library/Services/ 目录。使用场景:(1) "安装我的自动化服务",(2) "部署所有 Automato...
- 将所有配置文件存入 Git 仓库(如
~/dotfiles),结构清晰,例如:
~/dotfiles/ ├── zsh/.zshrc ├── vscode/settings.json ├── git/.gitconfig └── bin/ln.sh ← 自动创建软链接的部署脚本
- 运行
./bin/ln.sh,用ln -sf把配置文件链接到对应位置(如~/.zshrc → ~/dotfiles/zsh/.zshrc) - 避免直接修改
~/.zshrc等原始路径,所有变更只发生在仓库里,确保每次重装都干净一致
用 Ansible 或 Shell 脚本驱动全流程
单纯靠 Brewfile 和符号链接还不够——有些操作需权限、需判断、需顺序,这时需要一个“指挥中心”:
- 推荐使用轻量级 shell 主控脚本(无需额外依赖),按阶段执行:
# install.sh set -e # 任一命令失败即退出 ./setup/brew.sh # 安装 Homebrew + Brewfile ./setup/shell.sh # 配置 Zsh + oh-my-zsh + 插件 ./setup/git.sh # 写入全局用户信息、core.autocrlf=input ./setup/vscode.sh # 同步扩展列表、链接 settings/snippets
- 每个子脚本职责单一、可单独调试;支持
if [ -f ~/.zshrc ]; then echo "skip"; else ... fi做幂等判断 - 若团队协作或需更复杂逻辑(如条件安装 Docker Desktop),可升级为 Ansible Playbook,用
mac-dev-playbook这类成熟项目直接复用
备份策略:不只是备份软件,更要备份状态
真正的自动化备份,不是定期压缩 /opt/homebrew,而是保存能重建一切的“最小必要集”:
-
必存三项:Brewfile(工具清单)、dotfiles 仓库(配置源码)、
~/.tool-versions(asdf 多版本声明) -
可选但推荐:VS Code 的
extensions.txt(code --list-extensions > extensions.txt)、PostgreSQL 的pg_dump全库导出(每日一次)、Time Machine 加密备份磁盘(整机兜底) - 所有备份项均推送到私有 Git 仓库或加密云存储,不依赖本地硬盘——毕竟硬盘会坏,而 Git 记录永存

















