一台 256 GB 的 MacBook 是一台不错的开发机,直到它不再是。macOS 占 20 到 30 GB,Xcode 再占 12 到 15 GB,几个月的正常工作之后,「磁盘几乎已满」的对话框会在最糟糕的时刻弹出来。下面按能找回多少空间的顺序,说明空间去了哪里,以及你可以怎么做。

空间去了哪里

在一台用于开发的 256 GB Mac 上,这些是常见的元凶,按大小从高到低排列。

  • 模拟器运行时。 每个 iOS、watchOS 或 visionOS 运行时是 7 到 8 GB。Xcode 每次更新都会安装一个新的,并保留旧的。三个闲置的运行时就是 22 GB。
  • DerivedData。 Xcode 的构建文件夹。在有几个活跃项目的机器上是 10 到 25 GB,而且会一直增长,直到你删除它。Xcode 会自行重建。
  • Docker 的磁盘镜像。 一个文件,通常 20 到 60 GB,保存着你拉取过的每一个镜像和容器。Docker 只在你要求时才会收缩它。
  • node_modules。 每个项目几百 MB,乘以你今年克隆的每一个项目。20 到 40 GB 很常见。
  • 包缓存。 npm、pip、Gradle、Cargo、CocoaPods、Homebrew。加起来 5 到 15 GB,全部按需重建。
  • 旧版本工具链。 nvm 里的 Node 版本、pyenv 里的 Python 版本、JDK、Rust 工具链。3 到 8 GB,而你通常只需要其中一个。

按顺序删除什么

  1. 不再测试的版本的模拟器运行时。 Xcode › 设置 › 组件,或者让 Cache Goblin 连同大小列出它们。需要时可以重新下载。
  2. DerivedData 和包缓存。 可以直接删除。下一次构建会慢一次,之后恢复正常。
  3. 几个月没打开的项目里的 node_modules。 npm install 会把它们找回来。保留这个月碰过的项目的那些。
  4. 不再使用的 Docker 镜像。 docker system prune 会删除已停止的容器和悬空镜像。Cache Goblin 会替你运行同一条命令,并先显示它将回收多少空间。
  5. 旧版本工具链,一次删一个,先确认哪些项目锁定了它们。

在一台 256 GB 的 Mac 上,这些加起来通常是 40 到 80 GB,正是一块装满的硬盘和一块宽裕的硬盘之间的差距。

防止它再次装满

缓存会重新长回来。这本来就是它们的用途。诀窍是定期清理安全的那些,每年再看几次其余的部分。Cache Goblin 可以按你选择的周期自动清理「安全」类,并在菜单栏里显示「可恢复」和「有风险」类,让你在对话框弹出之前就看到数字。

什么时候 256 GB 确实太小了

如果你运行扫描后,缓存加起来只有 15 GB,那么硬盘装满的是你自己的文件,没有哪个清理工具能解决这个问题。把媒体文件移到外置硬盘,或者计划在下一台 Mac 上选更大的配置。我们在给 Mac 增加存储空间最便宜的方法中比较了各种选项及其代价。

免费下载 Cache Goblin 并运行一次扫描。不到一分钟,它就会准确显示上面哪些项目在你的 Mac 上,以及各有多大。