composer clear-cache 一次性清除全部本地缓存,包括archives、files、远程元数据及checksum;不支持--gc参数,仅提供全量清除或按archives/files分类型清理。

composer clear-cache 是什么,它到底清了哪些东西?
composer clear-cache 是 Composer 官方提供的缓存清理命令,它会**一次性删除所有本地缓存内容**:包括已下载的 .zip/.tar 包归档(archives)、解压后的临时文件(files)、远程仓库元数据(如 packages.json、版本列表)、以及 checksum 校验信息。它不区分“过期”或“正在用”,全部清空。
执行后你会看到类似输出:
Clearing cache (C:\Users\Alice\AppData\Local\Composer\cache) Cache directory cleared.
该命令适用于以下典型场景:
- 切换镜像源(如从 packagist.org 改为阿里云镜像)后仍拉不到新版包
-
composer require foo/bar报No matching package found,但确认包名和版本完全正确 - 反复
install却总解压出旧版代码,或提示corrupted archive/checksum mismatch - 刚删了
vendor重装,问题依旧复现——说明不是项目级问题,而是全局缓存污染
composer clear-cache --gc 并不存在
Composer **没有内置 --gc 参数**,也**不支持 composer clear-cache --gc 这种写法**。这是常见误解,可能源于对 Node.js 的 npm cache clean --force 或 Go 的 go clean -cache 的混淆,或误读某些非官方文档/博客的笔误。
运行该命令会得到明确报错:
[InvalidArgumentException]
Command "clear-cache" is not defined.
Did you mean one of these?
clear-cache
dump-autoload
或者(如果拼写正确但参数非法):
[RuntimeException] The "--gc" option does not exist.
也就是说:Composer 不提供“垃圾回收式渐进清理”机制,它只有“全量清除”(clear-cache)和“按类型拆分清除”(见下一条)两种粒度。
替代方案:按需清理 archives 或 files
虽然没有 --gc,但 Composer 自 2.2+ 起支持**分类型清理**,更接近“精准回收”的意图:
-
composer clear-cache archives—— 只删.zip/.tar等原始包文件(占空间最大,常达几百 MB) -
composer clear-cache files—— 只删解压后用于安装的临时目录(如vendor/composer/xxx/类结构的缓存副本)
例如,你发现磁盘快满了,但不想重下所有包元数据(避免后续 update 拉取缓慢),就可以只执行:
composer clear-cache archives
这比全量 clear-cache 更轻量,也避免了因元数据缓存丢失导致的首次 update 卡顿。
什么时候该手动删 cache 目录?
极少数情况下,composer clear-cache 命令本身失效(比如权限错误、缓存目录被其他进程锁定、或 Composer 自身损坏),这时可手动清理:
- 先查路径:
composer config cache-dir - Linux/macOS:
rm -rf ~/.composer/cache/* - Windows:
del /s /q "%LOCALAPPDATA%\Composer\cache"(注意不是%APPDATA%,新版 Composer 默认用%LOCALAPPDATA%)
⚠️ 注意:手动删除后,Composer 下次运行会自动重建目录结构,但不会自动恢复旧缓存——这点和 clear-cache 效果一致。真正容易被忽略的是:缓存清理不影响 composer.json、vendor 或锁文件,但它会让下一次 install 变慢,因为所有包都要重新下载。










