composer 不支持按包名排除清理缓存,因其缓存按 files/、repo/、vcs/ 目录分类并以哈希存储,无包名索引;clear-cache 会一并清空这些目录,无法保留如 laravel/framework 等特定依赖的缓存。

Composer 本身不支持“清理缓存时排除某些核心依赖”——因为它的缓存机制根本不按“包名”分类,而是按下载来源(files/、repo/、vcs/)和哈希存储,没有“保留 laravel/framework 缓存”这种选项。
composer clear-cache 为什么不能 exclude 包
执行 composer clear-cache 时,它只清空 ~/.composer/cache/files/、repo/、installers/ 这几个子目录,所有内容一视同仁。缓存里根本没有“哪个 ZIP 属于哪个包”的索引表;一个 laravel/framework 的 ZIP 包和一个 phpunit/phpunit 的 ZIP 包,都只是按 URL 哈希命名的二进制文件,无法按 vendor 名过滤。
- 你看到的“缓存变小了但下次 install 还很慢”,不是因为缓存被误删,而是因为
clear-cache删的是已下载产物,不保留解析后的元数据(如packages.json合并结果、依赖图快照) - 所谓“核心依赖缓存更快”,其实是
repo/目录里存着packagist.org的完整packages.json快照,删了它,composer update就得重新 HTTP 请求 + 解析全部包信息,耗时翻倍 -
vcs/目录更不认包名:它存的是 Git 克隆副本,哪怕你只装过一次spatie/laravel-backup并设了"--prefer-source",它就会拉整个仓库(含 .git),占几百 MB,且无法按包名选择性清理
想保留 repo/ 加速后续操作?别清它
如果你的目标是“清缓存但不让下次 update 变慢”,真正该保护的是 repo/ 目录——它存着 Packagist 的压缩元数据快照,重用它能跳过大量网络请求和 JSON 解析。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 手动跳过
repo/:rm -rf ~/.composer/cache/files ~/.composer/cache/installers(Linux/macOS)或rd /s /q "%APPDATA%\Composer\Cache\files" "%APPDATA%\Composer\Cache\installers"(Windows) - 保留
~/.composer/cache/repo/和~/.composer/cache/vcs/(后者虽大,但 Git 克隆可复用) - 验证是否生效:运行
composer show laravel/framework后立刻再跑一次,第二次应明显更快——说明repo/的缓存还在起作用 - 注意:
composer config --global cache-max-size "500M"会自动淘汰旧的repo/条目,但不会清空整个目录,比手动删更可控
真正影响“核心依赖安装速度”的其实是 vcs/ 目录
很多人误以为删缓存是为了让 laravel/framework 装得更快,其实恰恰相反:如果它被以 --prefer-source 方式安装过,vcs/ 里就存着完整 Git 仓库,下次装同版本时 Composer 会直接 git clone 本地副本,比下载 ZIP 快得多。删了它,反而变慢。
- 检查是否真有加速效果:
ls -lh ~/.composer/cache/vcs/ | grep laravel(Linux/macOS) - 若存在,且你确定后续仍会频繁安装 Laravel 相关包,就别碰
vcs/—— 它不是垃圾,是预热缓存 - CI 环境除外:磁盘紧张时可关掉它:
composer config --global cache-vcs false,之后所有 Git 包强制走--prefer-dist - 禁用后首次安装会慢,但后续靠
files/(ZIP 缓存)也能提速,只是不如vcs/那么极致
真正需要警惕的,是误把 vendor/ 当缓存去删,或者指望 clear-cache 解决 autoload 错误——它跟自动加载完全无关。缓存清理只影响下载和元数据解析阶段,类找不到、服务注册失败、配置残留,全得靠 composer remove + dump-autoload + 手动 grep 源码来解决。










