composer clear-cache只删除~/.composer/cache(Linux/macOS)或%APPDATA%\Composer\Cache(Windows)下的repo/、files/、vcs/、http/四类缓存,不删vendor/、不改composer.lock、不重置镜像配置,清完无空间变化主因是vendor/占大头而非缓存。

composer clear-cache 能解决大部分安装异常和缓存型磁盘占用,但它不删 vendor/、不修 lock 文件、也不绕过镜像延迟——清完还出问题,八成不是缓存的事。
composer clear-cache 到底删了什么
它只动 ~/.composer/cache/(Linux/macOS)或 %APPDATA%\Composer\Cache(Windows)下的内容,包括:repo/(packages.json 快照)、files/(.zip/.tar 包)、vcs/(git 克隆缓存)、http/(HTTP 响应缓存)。
不会碰这些:
-
vendor/目录 —— 真正占空间的大头,通常 300MB+,缓存一般不到 500MB -
composer.lock—— 清完照样锁版本,装旧版别怪缓存 - 全局镜像配置(如
composer config -g repo.packagist)—— 源地址不会被重置
执行后终端会输出类似 Clearing cache (12.4 MiB),没报错就成功了;没输出≠失败,只是缓存本来就很空。
为什么 clear-cache 后磁盘空间几乎没变
常见误判:以为缓存是罪魁祸首,其实 vendor/ 才吃空间。一个中等 Laravel 项目,vendor/ 占 300–800MB 很正常,而缓存积压半年最多 2–5GB,多数人根本不到 1GB。
查清楚再动手:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- Linux/macOS:
du -sh $(composer config --global cache-dir)看缓存大小 - 再跑一遍:
du -sh vendor/ | sort -hr | head -5对比真实大户 - Windows:打开
%APPDATA%\Composer\Cache属性看大小,别只盯着资源管理器缩略图
如果缓存 sys_get_temp_dir() 返回的临时目录(/tmp 或 C:\Users\XXX\AppData\Local\Temp),那里常堆着未清理的 composer_*.zip 和 php*.phar。
clear-cache 卡住、没反应、报 Permission denied 怎么办
这不是命令坏了,而是底层文件状态异常:
- 卡在无输出、CPU 低、磁盘 I/O 几乎为 0 → 很可能是某个损坏的
.zip校验失败,Composer 在反复重试 - 报
file_put_contents(.../xxx.zip): failed to open stream→ 磁盘真满了,或权限不对(比如之前用sudo composer install写入的文件) - 报
Could not delete .../packages.json→ 文件被 IDE 或后台进程占用(如 VS Code 正在扫描该目录)
应急操作:
- 加
--no-interaction跳过交互确认:composer clear-cache --no-interaction - Linux/macOS 查占用:
lsof +D ~/.composer/cache;Windows 用handle.exe -a cache(Sysinternals 工具) - 权限问题别硬上
sudo,先改属主:chown -R $USER ~/.composer/cache
想留最新版、删旧版缓存?没有内置命令
Composer 不提供 --keep-latest 这类选项。所谓“精准清理”,只能手动进 ~/.composer/cache/files/ 操作:
- 每个子目录名是包名哈希 + 版本号,目录内含
.dist(zip/tar)和.source(git clone) - 按修改时间保留最新版(需 bash/zsh):
for d in */; do ls -t "$d" | tail -n +2 | xargs -I{} rm -rf "$d{}"; done - 删 90 天前的 zip:
find ~/.composer/cache/files -name "*.zip" -mtime +90 -delete
⚠️ 注意:手删前停掉所有 Composer 进程;别乱动 repo/packagist.org/,那是核心索引,删了会导致首次 composer update 明显变慢。真正省事的方式其实是定期 composer self-update —— 新版对缓存复用更聪明,比反复清理更治本。

















