mac-cleaner-cli:一个用 npx 就能跑的 macOS 清理工具,值得你认真看看
免费 macOS CLI 用于清理磁盘空间、缓存、日志、Homebrew、Xcode。 CleanMyMac 的开源替代品。
秒懂
- 它是什么?
- mac-cleaner-cli 是一个开源的 macOS 命令行清理工具,用 TypeScript 写成,MIT 许可。它把缓存、日志、Homebrew 残留和 Xcode DerivedData 的清理流程变成了几条可脚本化的命令,同时用风险分级来避免误删。
- 适合谁用?
- mac-cleaner-cli 适合那些已经习惯用终端管理 macOS 的开发者,尤其是需要定期清理 Homebrew、Xcode DerivedData 或 Docker 残留的人。它不适合完全不懂命令行的普通用户,也不适合需要图形界面预览磁盘占用的人,这类需求应该用 DaisyDisk 或 CleanMyMac。
- 能商用吗?
- 可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
- 还在维护吗?
- 在维护。仓库最近一次提交在 29 天前。
- 用什么语言写的?
- 主要是 TypeScript(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。
开源项目深度解析
它解决的是 macOS 磁盘空间管理的最后一公里
macOS 自带的存储管理面板能告诉你哪些类别占了多少空间,但不会帮你清理 Homebrew 的下载缓存,也不会动 Xcode 的 DerivedData。mac-cleaner-cli 瞄准的正是这些开发者日常会积累、但系统工具不管的垃圾。它把清理对象分成安全、中等和危险三档,默认只显示前两档,危险项目需要显式加 --risky 才会出现。这个设计说明作者清楚清理工具最大的风险是误删,而不是清理不干净。
从 npx 到 cron:一条命令的三种用法
最简单的用法是直接运行 npx mac-cleaner-cli,它会扫描、列出可清理的项目,然后让你用复选框选择。交互模式支持方向键、空格选择、a 全选、i 反选,还能按右箭头进入某个类别,逐文件挑选。对于自动化场景,它提供了 scan 和 clean 两个子命令。scan --json 可以输出机器可读的扫描结果,clean --categories trash,browser-cache,homebrew --yes 可以无提示清理指定类别。这意味着你可以把它写进 cron 或 CI 脚本,每周自动清理一次 Homebrew 缓存。
风险分级不是摆设,它决定了默认行为
README 明确列出了三档分类。安全类包括废纸篓、临时文件、浏览器缓存、Homebrew 缓存和 Docker 未使用镜像。中等类包括系统缓存、日志、开发缓存和孤儿 node_modules。危险类包括超过 30 天的下载、iOS 备份、邮件附件、重复文件、大于 500MB 的文件、语言本地化和 git worktrees。危险类在交互模式下不会出现,除非你加 --risky;在 clean 命令中,即使加了 --risky,这些类别仍然会被跳过,除非再额外传 --unsafe。这个双重保险值得肯定,但也意味着如果你想清理下载文件夹,必须明确知道自己要做什么。
备份和配置:它考虑到了清理后的后悔问题
mac-cleaner-cli 提供了 backup --list 和 backup --clean 命令,说明它在清理前会创建备份。虽然 README 没有详细说明备份的存储位置和恢复方式,但存在这个命令本身就比那些删了就没了的小工具强。config --init 和 config --show 可以管理配置,具体配置项没有展开,但至少说明它支持持久化设置。对于需要定期清理的机器,建议先跑一次 scan --json 把结果存下来,对比清理前后的差异,这样能知道工具实际删了什么。
安全承诺:离线、无 root、5 个运行时依赖
README 强调三个安全特性:100% 离线运行,没有遥测;不需要 root 权限,所有操作以当前用户身份执行;只有 5 个运行时依赖,并且通过 Socket.dev 监控供应链攻击。这些说法如果属实,确实比 CleanMyMac 和 DaisyDisk 更透明,因为后两者的闭源代码和遥测行为无法审计。但注意,maintenance --dns 命令可能要求 sudo,这意味着某些操作还是会提权。另外,清理系统日志和缓存时,即使以当前用户身份运行,也可能影响正在运行的应用程序,比如清 Safari 缓存可能导致浏览器重新加载页面。
与 CleanMyMac 和 DaisyDisk 的差异:不是同一类工具
README 中的对比表把 mac-cleaner-cli 和 CleanMyMac、DaisyDisk 放在一起,但它们的定位其实不同。CleanMyMac 是图形界面的一站式清理工具,提供卸载、优化、恶意软件扫描等功能,但闭源且收费。DaisyDisk 是磁盘空间可视化工具,能让你看到哪些文件占空间,但清理能力有限。mac-cleaner-cli 是命令行工具,适合脚本化和 CI 集成,但它的扫描能力依赖文件路径规则,不会像 DaisyDisk 那样生成可视化的磁盘地图。如果你需要理解磁盘空间被什么占满,DaisyDisk 更合适;如果你需要定期自动清理已知的垃圾路径,mac-cleaner-cli 更合适。
维护成本和许可证:MIT 意味着你可以改,但也要自己负责
项目使用 MIT 许可证,这意味着你可以自由使用、修改甚至商用,但没有任何担保。仓库的最近提交是 2026 年 6 月,版本号在短时间内连续发布了 v1.3.3、v1.3.4、v1.3.5,说明维护活跃。但活跃更新也意味着命令行接口可能变化,如果你在脚本中依赖特定输出格式,升级前需要检查 changelog。另外,README 提到 Windows 版本 windows-cleaner-cli,但那是另一个项目,行为不一定一致。对于关键的生产环境,建议锁定版本号,不要用 npx 直接跑最新版,而是先 npm install -g mac-cleaner-cli@1.3.5 固定版本。
编辑结论
mac-cleaner-cli 适合那些已经习惯用终端管理 macOS 的开发者,尤其是需要定期清理 Homebrew、Xcode DerivedData 或 Docker 残留的人。它不适合完全不懂命令行的普通用户,也不适合需要图形界面预览磁盘占用的人,这类需求应该用 DaisyDisk 或 CleanMyMac。在采用之前,先确认你的 macOS 版本和 Node.js 环境,然后跑一次 npx mac-cleaner-cli scan --json 看看扫描结果,确认它列出的路径确实是你想清理的内容。另外,涉及 downloads、ios-backups 和 duplicates 等类别时,务必先理解 --risky 和 --unsafe 的含义,避免误删重要文件。这个工具的价值在于可审计和可脚本化,而不是清理速度或花哨的界面。
社区笔记