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

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%\Composer\Cache用资源管理器查看
有些公司镜像或自建仓库会把缓存存在非默认路径,cache-clear 默认只清全局配置指向的那个目录,不会遍历所有可能位置。
清完之后装包变慢?这是正常现象
缓存清空后,下次 composer install 或 composer 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 对缓存压缩和复用更聪明,比反复清缓存更能稳住磁盘增长节奏。










