Xcode Cache Cleaner
扫描项目目录或全局Xcode缓存(位于~/Library/Developer/),报告大小,并可选删除以释放磁盘空间。
两种模式
bash scripts/clean-cache.sh [--dry-run] [--yes]
当用户指定特定项目目录(SPM .build、Pods、node_modules等)时使用。
bash scripts/clean-xcode-global.sh [--dry-run] [--yes] [--keep-ios ]... [--include-archives]
当用户要求清理Xcode、DerivedData、iOS DeviceSupport、模拟器等全局缓存时使用(例如“清一下Xcode缓存”、“free space on my mac”、“reclaim disk from Xcode”)。
涵盖:
~/Library/Developer/Xcode/DerivedData/
— 所有删除
~/Library/Developer/Xcode/{iOS,watchOS,tvOS,macOS} DeviceSupport/ — 默认保留每个平台最高版本文件夹;传递--keep-ios 26.4.2 --keep-ios 18.5(可重复,子字符串匹配)以覆盖
~/Library/Caches/com.apple.dt.Xcode — 删除
~/Library/Developer/Xcode/Archives/
— 默认列出但不删除(这些是已签名的.xcarchive构建)。传递--include-archives以也删除。
CoreSimulator不可用设备 — 运行xcrun simctl delete unavailable(安全;仅删除Xcode已经丢失的设备)
标志:
--dry-run — 仅扫描和报告,不删除
--yes / -y — 跳过确认提示(当代理驱动时使用)
--keep-ios — 保留与此子字符串匹配的DeviceSupport文件夹(可重复)。应用于所有OS DeviceSupport目录,而不仅仅是iOS。
--include-archives — 也删除Archives/
(默认:保留)
始终先运行--dry-run,显示用户结果,然后在运行实际清理之前询问(或传递--yes如果用户已经确认)。
两个脚本都更喜欢trash(可恢复)而不是rm -rf(当可用时)。
支持的缓存类型
缓存模式 生态系统
SPM .build .build/ 目录 Swift / iOS
DerivedData DerivedData/ 目录 Xcode
xcresult .xcresult 包 Xcode tests
Pods Pods/ 目录 CocoaPods
Carthage/Build Carthage/Build/ Carthage
node_modules node_modules/ Node.js
Gradle .gradle .gradle/ 目录 Android / Java
Gradle build build/ 在.gradle下 Android / Java
Rust target target/ 在Cargo.toml旁边 Rust
Python pycache __pycache__/ 目录 Python
Python .pytest_cache .pytest_cache/ 目录 Python
Python .mypy_cache .mypy_cache/ 目录 Python
脚本还报告.git大小(不删除),并提示运行git gc --aggressive。
注意
所有删除都是可恢复的(通过重新构建或通过Trash如果安装了Trash)。不触摸源代码。
项目模式脚本在扫描之前将目标解析为绝对路径。
对于非常大的项目,初始du扫描可能需要一分钟。
全局模式的DeviceSupport默认(保留最高版本)是保守的;如果用户有多个物理设备在不同的iOS版本上,应在删除之前提示显式--keep-ios模式。