composer clear-cache 仅清理全局缓存目录(如 ~/.composer/cache 或 %APPDATA%\Composer\Cache),包括 ZIP 包、dist 解压文件、哈希信息和 autoloader 映射,不触碰 vendor/ 和 composer.lock。

composer clear-cache 命令能删掉哪些文件
composer clear-cache 是官方推荐的缓存清理方式,它会清空 Composer 自己管理的所有缓存目录,包括:~/.composer/cache(Linux/macOS)或 %APPDATA%\Composer\Cache(Windows)。这些目录里存着下载的 ZIP 包、解压后的 dist 包、安装包的哈希校验信息、已编译的 autoloader 映射等。
注意:这个命令不会动你项目里的 vendor/ 或 composer.lock,只清理全局缓存。如果你看到磁盘空间没明显释放,大概率是 vendor/ 占用更大,那不属于缓存范畴。
为什么有时 clear-cache 没反应或报错
常见现象包括:命令执行后提示 Cache directory does not exist,或者反复运行后缓存大小不变。原因通常是:
- 当前用户权限不足,无法删除
~/.composer/cache下某些子目录(尤其在 CI 环境或 root 用户下混用时) - 缓存路径被自定义过,比如设置了
COMPOSER_CACHE_DIR环境变量但未生效,导致clear-cache清的是空路径 - 某些 ZIP 缓存文件被其他进程(如杀毒软件、IDE 后台索引)占用,系统拒绝删除
验证当前缓存路径是否正确,运行:
composer config --global cache-dir
手动删除缓存目录前要确认的三件事
直接 rm -rf ~/.composer/cache 或 rd /s %APPDATA%\Composer\Cache 很快,但容易出问题:
- 确保没有正在运行的
composer install或composer update进程,否则可能写入一半被中断 - 检查是否启用了
cache-files-ttl或cache-files-maxsize配置(通过composer config --global --list查看),它们会影响缓存生命周期,盲目清空可能让后续安装变慢 - 如果使用了私有 Packagist 镜像(如阿里云、腾讯云源),首次恢复时会重新下载所有包,建议提前确认网络稳定性
清理后 vendor 目录仍很大?那是正常现象
vendor/ 不是缓存,是已安装依赖的副本,composer clear-cache 对它完全无影响。如果你的目标是减小部署包体积,应该考虑:
- 用
composer install --no-dev --optimize-autoloader减少开发依赖和生成高效 autoload map - 删除
vendor/*/tests、vendor/*/docs等非运行必需目录(需确认许可证允许) - 改用
composer install --apcu-autoloader(PHP >= 7.4)减少文件 I/O,但不减少磁盘占用
缓存清理和 vendor 管理是两套逻辑,混在一起操作只会掩盖真正的问题点。










