composer clear-cache 不删除旧仓库元数据是因为它默认跳过 repo/ 下按 url 哈希命名的子目录(如 https---packagist.org/),这些目录缓存包列表、provider 映射和版本索引,导致改镜像或删仓库后仍复用旧数据;需手动清理 repo/ 对应路径、同步删除 vendor/composer/installed.json 和 composer.lock,并建议清除 vcs/ 目录以释放空间和避免 clone 拖慢。

composer clear-cache 为什么删不掉旧仓库的元数据
它默认跳过 repo/ 目录下的特定子目录,尤其是 https---packagist.org/ 这类按 URL 哈希命名的 metadata 缓存。这些文件里存着包列表、provider 映射和版本索引,Composer update 时优先复用它们,导致你改了镜像或删了自定义仓库后,依然拉不到新版、甚至还在连已下线的源。
手动清理 repo/ 下的旧仓库缓存路径
先确认真实缓存根目录:composer config --global cache-dir,再进 repo/ 子目录定位目标:
- 国内镜像失效后残留:删
https---mirrors.aliyun.com---composer/或https---packagist.phpcomposer.com/ - 私有仓库停用后卡住:搜
https---开头的目录名,匹配你曾经配过的 URL(注意:和/全被转义为-) - packagist.org 元数据太旧:直接删
https---packagist.org/,下次composer update会强制重拉完整索引
Linux/macOS 示例:rm -rf ~/.composer/cache/repo/https---mirrors.aliyun.com---composer
Windows 示例:rd /s /q "%APPDATA%\Composer\Cache\repo\https---mirrors.aliyun.com---composer"
删完 repo/ 还要同步处理 vendor/ 和 composer.lock
只清缓存不碰项目文件,等于白干。因为:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
vendor/composer/installed.json仍记录着旧包版本和来源,composer show会继续显示错误信息 -
composer.lock里硬编码了 dist URL 和 sha256,若指向已删除的仓库,composer install会直接失败 - 不删
vendor/就跑composer update,Composer 仍可能从旧缓存重建依赖图,绕过新配置
推荐组合操作(执行前备份):composer clear-cacherm -rf ~/.composer/cache/repo/https---*rm -f vendor/composer/installed.json composer.lockcomposer install --no-cache --force-checksums
vcs/ 目录里的 Git 裸仓库要不要一起清
要,而且最该优先清——单个 vcs/ 子目录常占 300–800 MB,还容易耗尽 inode。它不参与元数据解析,但会拖慢 composer update 的 clone 阶段。删了下次需要时自动重建,完全安全:
- Linux/macOS:
rm -rf ~/.composer/cache/vcs/* - Windows:
rd /s /q "%APPDATA%\Composer\Cache\vcs" - 别碰
~/.composer/cache/repo/packagist.org/—— 它是 Composer 默认源的核心索引,删了首次 update 会卡住等下载
真正难清理的从来不是缓存本身,而是缓存和 lock 文件、vendor 状态之间的隐式耦合。一个没删干净的 composer.lock,比十个残留的 repo 目录更容易让整个流程静默失败。










