pnpm 缓存占用太大,怎么清理?
用 MangoDisk 查看 pnpm 缓存的大小和路径,分清 store prune 与清空目录的区别,了解清理对项目依赖的影响,找出值得释放的空间。

项目删了,磁盘却没空出多少;顺着目录一找,pnpm 的 store 里还留着不少文件。这不一定是没删干净:pnpm 会把下载过的包放在共享存储里,供不同项目复用,不会随着某个项目一起消失。
想先清掉用不上的包,可以用 pnpm store prune。如果想知道 pnpm 和其他开发工具究竟占了多少空间,可以先用 MangoDisk 扫描,再挑值得清理的部分。 不必一上来就删整个 store,更不用动项目源码和锁文件。
用 MangoDisk 找出占空间的开发缓存
电脑上装过 npm、pnpm、Python、Rust,缓存往往散在不同目录。与其挨个找,不如打开 MangoDisk 的深度清理,扫描后直接比较各项占用。

找到 pnpm 缓存项,展开查看目录和大小。如果它只占了一点空间,就没必要急着清;如果已经积累了不少,再根据后面的说明选择整理还是清空。扫描本身不会删除文件。
MangoDisk 目前覆盖 Windows 的 %LocalAppData%\pnpm\store,以及 macOS 的 ~/Library/pnpm/store 和 ~/Library/Caches/pnpm。改过存储位置的话,先查询当前使用的目录:
pnpm store path
这条命令只显示路径。MangoDisk 没扫描到自定义目录,不代表那里没有缓存。 可以到文件资源管理器或 Finder 中打开返回的路径,确认占用。
只想整理不用的包,先用 prune
Windows 打开 PowerShell,macOS 打开终端。等正在进行的安装和构建结束后,运行:
pnpm store prune
它会删除 store 中未被引用的包,不经过回收站,不是把整个目录清空。以后切换分支或安装旧版本依赖时,如果又需要这些包,pnpm 会重新下载。pnpm 官方文档也建议偶尔整理即可,不必每次安装后都清一次。
执行完还有文件很正常,prune 的目的本来就不是让目录变空。近期需要离线工作,或者私有软件源暂时连不上,先保留这份缓存,免得之后安装时缺包。
想清空缓存,要先确认依赖能重新下载
如果你想清掉已确认可重建的缓存,而不只是整理无用包,可以在 MangoDisk 中取消其他项目的选择,只勾选核对过的 pnpm 缓存项,再确认清理。
这里和 prune 不一样:MangoDisk 按选中的缓存目录清理,不会替你逐个判断包是否还被项目使用。 清理前先结束相关任务,确认没有混放个人文件,并准备好之后重新下载依赖。删除方式与恢复限制见安全清理指南。
尤其要留意全局虚拟存储:如果项目启用了它,或者全局工具正在使用 store 内的共享依赖,清空后可能需要重新安装才能运行。这种情况不要整目录删除,优先使用当前 pnpm 版本支持的整理方式;拿不准就先保留。pnpm 的存储设置说明解释了这种依赖关系。
package.json、pnpm-lock.yaml 和源码都不属于缓存清理对象。项目里的 node_modules/.pnpm 也不是可以随手清空的临时目录,它里面有项目正在使用的依赖。
目录看着很大,不一定能腾出同样多的空间
pnpm 的一个特点是复用文件,而不是每个项目都单独存一份。在使用硬链接的情况下,store 和项目目录可以指向同一份磁盘数据;只删掉其中一处,另一处仍然在用,就不会释放这部分空间。pnpm 的目录结构说明有具体示例。
所以,不要把几个目录显示的容量简单相加,也别因为清完后空间变化不大,就继续删正在用的依赖。以清理前后的磁盘可用空间为准。
如果 pnpm 整理完了,硬盘还是紧张,可以用 MangoDisk 的磁盘空间分析查看开发目录:究竟是旧项目、构建输出,还是其他工具的缓存占得多。找到大头后再处理,比反复清同一份缓存更有效。
下载 MangoDisk,把分散的开发缓存放到一个界面里查看和清理。免费开源,无需注册或登录。
相关阅读:npm 缓存清理 · Cargo 缓存与 target 文件夹 · 开发者磁盘清理指南