Mac开发者阅读约需 5 分钟

如何在 Mac 上清除 Homebrew、npm、pip、Gradle、CocoaPods 和 Docker 缓存

包管理器和开发工具保留大量缓存。以下是安全清理 Homebrew、npm、Yarn、pnpm、pip、uv、Gradle、CocoaPods、Dart、Cargo 和 Docker 的官方命令。

已更新 · 由 spacerecover 团队撰写

每个包管理器都会保存其下载内容的本地缓存,并且大多数包管理器从不自行清理它。经过几年的项目,这些缓存可以轻松达到数十 GB。好信息是,几乎所有这些都可以安全地清除,因为这些工具会再次下载它们需要的内容。

**开始之前:**停止运行构建、安装和开发服务器。在工具使用缓存时清除缓存可能会导致令人困惑的错误。

查看空间在哪里

此只读命令显示常见缓存文件夹的大小:

du -sh ~/Library/Caches/Homebrew ~/.npm ~/Library/pnpm ~/Library/Caches/pip ~/Library/Caches/uv ~/.gradle/caches ~/Library/Caches/CocoaPods ~/.pub-cache ~/.cargo/registry 2>/dev/null

不存在的文件夹将被跳过。

Homebrew

Homebrew 保留下载的预编译软件包和旧版本的 formula 软件包。用以下方法清理它们:

brew cleanup

要同时删除所有缓存的下载,而不仅仅是旧的:

brew cleanup --prune=all

先运行 brew cleanup -n,预览将删除哪些内容;此命令不会实际删除文件。

npm、Yarn 和 pnpm

npm cache clean --force
yarn cache clean
pnpm store prune

npm cache verify 检查并整理缓存而不清除所有内容。 pnpm store prune 删除任何项目未引用的包,这对于项目之间共享的 pnpm 存储来说是安全的。

旧项目中的 node_modules 文件夹

每个 JavaScript 项目都有自己的 node_modules,通常有数百兆字节。要将它们列在项目文件夹中而不删除任何内容:

find ~/code -name node_modules -type d -prune -exec du -sh {} + 2>/dev/null

删除您不积极参与的项目中的 node_modules。运行 npm install 会将其恢复。

Python:pip 和 uv

pip cache purge
uv cache clean

uv cache prune 是一个更温和的选项,仅删除未使用的条目。旧项目中的虚拟环境(.venv 文件夹)也可能很大,并且可以从项目的依赖清单文件重新创建。

Gradle

Gradle 的依赖项缓存位于 ~/.gradle/caches 中。停止所有正在运行的守护进程,然后将其删除:

./gradlew --stop
rm -rf ~/.gradle/caches

Gradle 在下一个构建时再次下载依赖项。 Android Studio 用户还可以在 设置 > 语言和框架 > Android SDK 中删除旧的 Android SDK 平台和系统映像,并在 设备管理器 中删除旧的模拟器。

CocoaPods

pod cache clean --all

这会清除下载的 Pod。您项目的 Pods 文件夹和 Podfile.lock 不受影响。

Dart 和 Flutter

dart pub cache clean

这会删除 pub 缓存中的所有内容,包括全局激活的工具,您需要再次激活它们。在项目中运行 flutter pub get 会再次获取其包。项目中的 flutter clean 删除其构建输出。

Rust (Cargo)

在您不参与的项目中运行 cargo clean 来删除其 target 文件夹,这些文件夹通常是 Rust 项目中占用空间最多的部分。 ~/.cargo/registry中的软件包注册索引缓存可以删除并重新下载。

Docker

Docker Desktop 将镜像、容器、卷和构建缓存存储在单个磁盘镜像中,因此其存储空间不会因删除 Finder 中的文件而缩小。

  1. 查看什么在使用空间:

    docker system df
    
  2. 删除已停止的容器、未使用的网络、悬空镜像和构建缓存:

    docker system prune
    

    添加 -a 以同时删除容器未使用的所有映像。 不要添加 --volumes 除非您确定:卷保存持久数据,例如本地数据库。

  3. 在Docker Desktop > Settings > Resources中,您可以查看并限制磁盘映像大小。

Xcode

Xcode 的 DerivedData、档案、设备支持文件和模拟器都包含在我们单独的清除 Xcode 存储 指南中。

常见问题

清除 npm 缓存安全吗?

是的。 npm 根据需要再次下载包。首先停止任何正在运行的安装。您的项目及其 node_modules 文件夹不受影响。

docker system prune 会删除我的数据吗?

默认情况下,它会删除已停止的容器、未使用的网络、悬空镜像和构建缓存,但不会删除卷。通常保存数据库的卷只有在添加 --volumes 时才会被删除。

我可以删除 ~/.gradle/caches 吗?

是的,在停止 Gradle 守护进程之后。 Gradle 在下一个构建时再次下载依赖项,这需要时间和带宽。

希望我们帮您完成?

spacerecover 找到 Homebrew、npm、Gradle、CocoaPods、pip、uv、Swift 包和 Dart 缓存,以及 Xcode 构建输出和 Docker 存储,并说明每种内容会如何重新生成。它绝不执行不加区分的批量清理命令,并且代码文件夹中的项目受到保护。

资料来源和延伸阅读

继续