推荐用 brew leaves --installed-on-request 导出主动安装的软件清单,排除依赖包,结果为纯包名列表(如 nginx、postgresql),适合生产环境存为 Brewfile.production 或用于 CI 流程。
导出 homebrew 已安装软件清单,核心是区分“你主动装的”和“它自动拉进来的依赖”,生产或迁移场景下只关心前者。homebrew 本身不提供一键导出功能,但通过几条精准命令就能生成结构清晰、可复用、可验证的清单。
只导出你手动安装的软件(推荐用于生产环境)
这条命令排除所有依赖包,只列出你执行过 brew install 的 formula:
brew leaves --installed-on-request- 结果是纯包名列表(如
nginx、postgresql),适合存为文本或导入 CI 流程 - 建议重定向保存:
brew leaves --installed-on-request > Brewfile.production
生成结构化 Brewfile(适合长期维护与重装)
用 brew bundle dump 可导出带注释、支持版本锁定、兼容 brew bundle install 的声明式文件:
- 完整导出(含 cask 和 tap):
brew bundle dump --force --describe --global - 精简版(仅 formula,无 cask,去冗余注释):
brew bundle dump --force --no-casks --describe | grep -E '^(brew|tap)' - 加注释分组更清晰,例如:
# == PROD SERVICES ==brew 'nginx'brew 'postgresql'
# == DEV ONLY ==brew 'httpie'
过滤掉开发/临时工具,聚焦真实生产依赖
生产清单要剔除调试类、本地专用工具。可在基础命令后加过滤:
brew leaves --installed-on-request | grep -vE '^(httpie|jq|ngrok|fzf|tree)$' > Brewfile.production- 也可用
brew list全量查看,再人工核对:brew list | head -20快速浏览前20个 - 查某包是否为手动安装:
brew deps --installed-on-request nginx(空输出说明它是被依赖的)
务必验证清单能否真正还原
导出不是终点,验证才是关键。新建临时环境测试还原流程:
mkdir /tmp/brew-test && cd /tmp/brew-testbrew bundle install --file=/path/to/Brewfile.production --no-lock- 观察报错:是否某 formula 已弃用?是否漏了
tap?是否有版本冲突?及时修正清单 - 成功还原后,可用
brew list --installed-on-request对比确认一致性

















