Composer如何清理缓存释放磁盘空间?(cache-clear命令)

7次阅读

composer cache-clear 只删除 ~/.composer/cache/ 下的 repo/、files/、archives/ 全部内容,不触碰 vendor/、composer.json 或全局配置;清缓存后首次装包会变慢属正常设计。

Composer如何清理缓存释放磁盘空间?(cache-clear命令)

composer cache-clear 会删掉哪些文件

它只清理 ~/.composer/cache/ 下的全部内容,包括 repo/(包元数据)、files/(下载的 zip/tar 包)、archives/(解压后的临时归档)。不会动你的项目 vendor/composer.json 或全局配置。

执行前先确认缓存路径和大小

别急着清,先看下缓存占了多少空间、是不是真在你预期的位置:

  • 运行 composer config --global cache-dir 查当前路径
  • du -sh $(composer config --global cache-dir) 看实际体积(linux/macos
  • windows 用户可直接进 %APPDATA%ComposerCache 用资源管理器查看

有些公司镜像或自建仓库会把缓存存在非默认路径,cache-clear 默认只清全局配置指向的那个目录,不会遍历所有可能位置。

清完之后装包变慢?这是正常现象

缓存清空后,下次 composer installcomposer update 会重新下载所有包的元数据和 dist 包,首次耗时明显增加。这不是命令出错,是设计如此:

  • repo/ 缓存缺失 → 每次都要 http 请求 packagist.org 或镜像源拉 packages.json
  • files/ 缺失 → 所有 .zip 都得重下,尤其含大资产(如 laravel ui、前端模板)的包更明显
  • 如果频繁清理又频繁装包,建议改用 composer clear-cache(等价于 cache-clear),但周期控制在每月一次或仅在磁盘告警时执行

想精准清理而不是全删?没有内置方案

Composer 不提供按包名、按时间、按大小筛选的清理能力。所谓“精准”只能靠手动:

  • ~/.composer/cache/repo/,按子目录名(通常是 vendor/name 的 hash)判断是否属于某个旧项目
  • ~/.composer/cache/files/,看文件修改时间 + 文件名里的版本号,挑出半年没更新过的包归档
  • 注意:手删前确保 Composer 没在运行,否则可能引发锁文件冲突或后续命令报 Corrupted cache file

真正省事的方式其实是定期跑 composer self-update —— 新版 Composer 对缓存压缩和复用更聪明,比反复清缓存更能稳住磁盘增长节奏。

text=ZqhQzanResources