composer cache-dir 命令显示缓存根目录,如 /home/user/.composer/cache;缓存分 repo(元数据JSON)和 files(dist压缩包)两个关键子目录,archives 已弃用;清理需用 composer clear-cache 或手动删 files 中指定包,删 repo 会影响元数据更新。

composer show --installed 不能查缓存,得用 composer cache-dir
composer show --installed 只显示当前项目已安装的包,和本地缓存无关。真正查缓存位置和内容,得先知道缓存根目录在哪。composer cache-dir 命令直接输出 Composer 当前使用的缓存路径,比如:
/home/user/.composer/cache或
C:\Users\Name\AppData\Local\Composer\cache。这个路径是后续所有操作的基础,别跳过这步。
进缓存目录后看什么:重点盯 repo 和 files 两个子目录
缓存目录下通常有 repo、files、archives 等子目录:
-
repo存的是 Packagist 元数据快照(JSON),比如packagist.org%24packages.json,体积小但决定你能搜到哪些包 -
files存的是已下载的 dist 包压缩包(.zip/.tar.gz),文件名含哈希值,比如monolog/monolog/9a1e65d784c06b59715ac4f268af728b.zip -
archives是旧版 Composer(
直接 ls -l files/ 或 dir files\ 就能看到有哪些包被缓存过,大小也一目了然。
想批量清理或筛选缓存?用 composer clear-cache + 条件判断
composer clear-cache 是最安全的全量清理方式,执行后会清空整个缓存并提示新路径。但它不支持按包名过滤。如果只想删某个包的缓存:
- 手动进
files/目录,用find . -name "package-name"(Linux/macOS)或dir /s package-name(Windows)定位 - 注意:删了
files里的压缩包,下次 install/update 时仍会重下;但删了repo里的 JSON,首次运行composer update会重新拉元数据,可能稍慢 - 不建议直接删
repo/packagist.org整个目录,会导致所有包信息丢失,等效于首次使用 Composer
缓存是否生效,看 composer install 日志里的 Downloading 还是 Using version x.x.x
安装依赖时,留意终端输出:
- 如果看到
Downloading https://www.php.cn/link/5cf804803360a972e4d810f6bd181881...或Downloading https://www.php.cn/link/52ec1c0cc952d63a8bda67ff969b6968...,说明没走缓存(可能是元数据过期或网络强制刷新) - 如果看到
Using version ^2.0 for monolog/monolog+Installing monolog/monolog (2.0.0)且没提 “Downloading”,大概率是从files缓存解压的 - 启用
-v参数(composer install -v)能显示更细的日志,包括缓存命中路径,比如:Writing /home/user/.composer/cache/files/monolog/monolog/9a1e65d784c06b59715ac4f268af728b.zip into cache
缓存行为受 COMPOSER_CACHE_DIR 环境变量、config.cache-dir 配置和 --no-cache 参数影响,排查时优先确认这三项有没有被意外覆盖。










