Mac 上的 JetBrains 缓存(IntelliJ、WebStorm、PyCharm)
IntelliJ IDEA、WebStorm、PyCharm 这些 JetBrains IDE 会在 Mac 上留下好几个几个 GB 的目录,其中只有一部分能安全清理。缓存和索引下次启动会重建;配置、插件和项目数据不会。分清这层差别,才不会把一次清理变成丢设置或弄坏项目。
这篇文章是通用开发缓存指南的 JetBrains 专篇。文中的「Mole」只指 mole.fit 上的 Mole for Mac,以及它自带的 mo 命令行工具;文中不给每个 IDE 的 GB 数字,因为差别太大没有参考价值,你在自己机器上测。
JetBrains 存了什么,哪些不只是缓存
一个 JetBrains 安装是好几个恢复成本差别很大的目录。把它们当成一个文件夹,正是清理出错的地方。
| 层 | 存的是什么 | 能重建吗? |
|---|---|---|
| 缓存 | 编译好的检索数据和临时工作文件 | 能,下次启动 |
| 索引 | IDE 为浏览代码建立的项目索引 | 能,重新索引即可 |
| 日志 | 排查问题用的诊断文本 | 能,可安全清理 |
| 配置和设置 | 键位、代码风格、偏好设置 | 不能,这是你的配置 |
| 插件 | 已装插件及其数据 | 部分,重装会丢本地插件状态 |
| 项目数据 | .idea 文件夹和 Local History |
不能,这是项目和个人成果 |
前三层会自我重建,是安全的清理对象。后三层是你的配置和成果,无论放在哪个文件夹里都不是缓存。
优先用 IDE 自带的工具
删任何文件夹之前,先用 IDE 内置的入口。File > Invalidate Caches 会清掉缓存和索引并提议重启,这是不动设置就修好陈旧索引的受支持做法。具体菜单文案以你当前的 IntelliJ、WebStorm 或 PyCharm 版本为准,菜单标签会随版本变化。
如果你用 Toolbox App 管理多个 JetBrains 产品,它也提供逐产品的清理和各安装的位置。手动查看任何文件夹前先退出 IDE,免得删到运行中进程还占用的文件。
在 Mac 上找到系统目录
JetBrains 按版本记录它的目录位置,而产品加版本的具体子文件夹在每台机器上都不同,所以通过 IDE 定位你自己的(Help 会指向日志和配置文件夹),别去粘贴过时的绝对路径。在当前版本里,macOS 上的父文件夹是 ~/Library/Caches/JetBrains 和 ~/Library/Application Support/JetBrains,日志在 ~/Library/Logs/JetBrains。
动手前先量一量父目录,看重量到底在哪里:
du -sh ~/Library/Caches/JetBrains ~/Library/Application\ Support/JetBrains
Caches 的大小也包含 Local History,不能整个当成可删的缓存;设置和插件则在 Application Support。
安全顺序
- 通过 IDE 走一遍 Invalidate Caches,浏览不顺就重新索引一次。
- 量一量 JetBrains 的父文件夹,知道空间在哪。
- 在 IDE 的对话框里清缓存和索引,不勾选另外删除 Local History 的选项;日志单独核对。
- 绝不随手删
.idea或 Local History,那是项目和个人成果。 - 重启 IDE,确认空间确实回来了,再继续下一步。
和包管理器、散落的 node_modules 的重叠属于另一篇:如何清理 Mac 上的开发缓存讲 npm、Cargo、pip 和 Gradle,如何清理 Xcode讲 DerivedData(如果你也用苹果工具链构建)。IDE 不是 JDK,移除运行时是另一件事,见在 Mac 上卸载 Java。
磁盘视图什么时候有用
一旦你知道 JetBrains 的文件夹很大,磁盘视图就能帮你看清是哪个产品、哪个版本占了重量。Mole 的 Analyze 会把大目录连同路径和大小列出来供复核,Clean 则列出缓存候选项;扫描免费、不需要许可证,删什么由你决定。这和 mo purge 是两回事,后者扫的是可重建的项目构建产物而不是 IDE 缓存,见讲清 Mac 上的 purge。Mole 复核什么、又拒绝碰什么,见Mole 安全吗。
延伸阅读
- 如何清理 Mac 上的开发缓存:包管理器和
node_modules那一面。 - 哪些 Mac 缓存可以安全删除:可重建与否的通用规则。
- Mole 安全吗:一个复核式删除工具会删什么、不会删什么。
常见问题
清缓存会删掉我的项目吗?
一般的 Invalidate Caches 不会删项目文件或 Local History,但 Local History 就在系统目录里,对话框另有删除它的选项,别勾选。
用 Invalidate Caches 还是删系统目录?
Invalidate Caches 会在重启时清掉缓存和索引,只要不勾选额外选项,Local History 就会保留;手动删掉整个系统目录则可能把它一起删掉。设置和插件通常放在 Application Support。
多个 IDE 或 Toolbox:清一次还是逐产品清?
每个产品和版本各有子文件夹,缓存是按产品累积的。通过各个 IDE 或 Toolbox App 逐产品清理,动手前量一量 JetBrains 的父文件夹,看清到底哪个安装大。