composer clear-cache 仅清理 ~/.composer/cache/ 下的已下载包、元数据和安装器缓存,不触碰 vendor 目录、composer.lock 及已安装依赖,安全但释放空间有限(通常几百 MB 至几 GB)。

composer clear-cache 命令到底清什么
它只清理 ~/.composer/cache/ 下的已下载包(.zip、.tar)、元数据(repo/)和安装器缓存(files/),**不会动 vendor 目录、不会删项目里的 composer.lock,更不会影响已安装的依赖**。这是安全操作,但别指望它释放几十 GB 空间——多数缓存实际只有几百 MB 到几 GB。
执行前先确认缓存真实大小
直接跑 composer clear-cache 之前,建议先看一眼缓存占了多少地方,避免误判:
du -sh ~/.composer/cache
如果输出是 124M 或 2.3G,说明值得清;如果是 4K 或根本不存在,那命令会提示 No cache files to delete,不用白跑。
常见误判来源:
-
vendor/被当成缓存 —— 它是项目本地依赖,不属于 Composer 缓存体系 - 全局 bin 目录(如
~/.composer/vendor/bin)被误认为可清理对象 —— 这里放的是全局命令,删了就执行不了phpunit、laravel等
清除失败的典型原因和应对
运行 composer clear-cache 报错或无反应,大概率是权限或路径问题:
- Linux/macOS 下用
sudo执行 —— 错。缓存属当前用户,加 sudo 反而可能创建 root 权限的残留目录,后续普通用户无法写入 - Windows 上 Composer 安装在 Program Files,缓存路径含空格或特殊权限 —— 改用 PowerShell 以当前用户身份运行,或手动删
%APPDATA%\Composer\Cache - 缓存目录被其他进程占用(比如 IDE 正在扫描)—— 关闭 PhpStorm / VS Code 的文件索引,再试
- 磁盘满导致清理中途失败 —— 先删
~/.composer/cache/files/(最占空间),再删repo/
想彻底腾空间?得配合其他动作
clear-cache 是起点,不是终点。真正吃空间的往往是历史包和未清理的开发残留:
- 删掉所有项目的
vendor/后重装:先rm -rf vendor/,再composer install --no-dev(省掉测试依赖) - 禁用 zip 包缓存(节省后续下载空间):
composer config --global cache-vcs false - 定期清理旧版本包(需额外工具):
composer global require symfony/flex后用composer outdated --direct检查,再针对性更新
最常被忽略的一点:Composer 默认保留最近 3 个版本的 dist 包,哪怕你只用最新版。这个行为没法关,只能靠定期 clear-cache 手动干预。










