composer cache:clear 只清理元数据缓存(如 packages.json、provider-*.json),不删除 zip 包和解压源码;真正清理包文件需用 composer clear-cache,它会删除 files/、repo/、vcs/ 目录及元数据。

Composer 本地缓存的包文件不会自动清理,长期使用后 vendor/composer/cache(或全局缓存目录)可能占用数 GB 空间,但 composer cache:clear 并不删除已下载的 zip 包和解压后的 dist 源码——它只清空 Composer 自己的元数据缓存(如 packages.json、provider-*.json),不影响安装速度。真要删包文件,得手动或用额外命令。
composer cache:clear 到底清什么?
这个命令只清理 Composer 内部用于加速仓库查询的「元数据缓存」,比如 Packagist 的包列表、版本约束解析结果、平台配置快照等。它不会碰以下内容:
-
~/.composer/cache/files/下的.zip和.tar包归档 -
~/.composer/cache/repo/下已解压的 dist 源码(如github.com-xxx/目录) - 项目级
vendor/或composer.lock
执行后你下次 composer install 或 composer update 仍会复用已有 zip 包,不会重新下载——除非元数据过期触发刷新。
如何真正清理所有下载过的包文件?
用 composer clear-cache(注意是 clear-cache,不是 cache:clear)才能删掉 files/ 和 repo/ 下的全部内容。这是 Composer 提供的唯一安全方式,会同时清理:
-
~/.composer/cache/files/(所有 .zip/.tar) -
~/.composer/cache/repo/(所有已解压 dist 源码) -
~/.composer/cache/vcs/(Git 克隆缓存,如github.com-xxx/) - 以及元数据缓存(即
cache:clear做的事)
运行后终端会显示类似:
Clearing cache (1.2 GiB)
注意:该操作不可逆,后续首次 composer install 可能变慢,尤其在低速网络下。
缓存路径在哪?能否自定义?
默认全局缓存路径由 COMPOSER_CACHE_DIR 环境变量决定,未设置时:
- Linux/macOS:
~/.composer/cache - Windows:
%APPDATA%\Composer\cache
你可以用 composer config --global cache-dir 查看当前值,或用 composer config --global cache-dir /path/to/cache 修改。修改后所有后续操作(包括 clear-cache)都作用于新路径。
项目级缓存不可单独配置;Composer 不支持 per-project 缓存隔离。
CI/CD 中要不要加 cache:clear 或 clear-cache?
不需要,反而有害。CI 环境通常应复用缓存来加速构建:
- 保留
~/.composer/cache/files/能跳过重复下载 - 保留
~/.composer/cache/repo/能跳过重复解压 -
cache:clear在 CI 中纯属冗余操作 -
clear-cache在 CI 中等于主动降速,除非你明确想排除缓存干扰调试
真正该做的是在 CI 配置中持久化 ~/.composer/cache 目录(如 GitHub Actions 的 actions/cache),而不是清理它。
别被命令名误导:cache:clear 是“清元数据”,clear-cache 才是“清包”。多数人想删的是 zip 文件,直接用后者;顺手记一下缓存路径,排查磁盘占用时能少翻十分钟文档。










