composer clear-cache 不更新包版本是因为它不清理 ~/.composer/cache/repo/ 下的仓库元数据(如 packages.json、provider-*.json),导致 composer update 复用旧快照;需手动删除 repo/ 目录并清理 vendor/composer/installed.json 和 composer.lock 才能获取新版本。

为什么 composer clear-cache 有时不更新包版本?
因为它的默认行为只删压缩包和部分索引,但关键的仓库元数据(比如 packages.json 和 provider-*.json)可能仍留在 ~/.composer/cache/repo/ 下,下次 composer update 会复用这些旧快照,导致拉不到新发布的包。尤其在 Packagist 或私有仓库刚推送 v2.1.0 后,本地还卡在 v2.0.0 的 provider 映射里。
直接删 repo/ 目录最有效
元数据缓存集中在 ~/.composer/cache/repo/(Linux/macOS)或 %APPDATA%\Composer\Cache\repo\(Windows),里面按仓库 URL 分目录,例如 https---packagist.org/。手动清空它比 composer clear-cache 更彻底:
- Linux/macOS:
rm -rf $(composer config --global cache-dir)/repo - Windows(CMD):
rd /s /q "%APPDATA%\Composer\Cache\repo" - Windows(PowerShell):
Remove-Item -Recurse -Force "$env:APPDATA\Composer\Cache\repo"
注意:别漏掉末尾斜杠,/repo/ 和 /repo 在 rm -rf 下行为一致,但写全更稳妥。删完再运行 composer update --dry-run -v,能看到它开始重新下载 packages.json,说明生效了。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
别忘了同步清理项目内两处“影子缓存”
光清全局 repo/ 不够,Composer 还会读取项目级的已安装状态快照:
-
vendor/composer/installed.json:记录当前所有包的精确版本和哈希,影响composer show输出 -
composer.lock:不是缓存,但会强制锁定旧版本;若想升级,必须删掉它再composer update
删前先确认是否真要升版——如果 composer.json 里写了 "minimum-stability": "stable",即使远程已有 RC 版本,也不会被选中。
清理后首次 update 变慢是正常的
元数据重建包含下载 packages.json、解析 provider 映射、校验哈希、生成依赖图快照等步骤,耗时明显高于复用缓存。若你频繁遇到版本滞后问题,可长期启用 composer config --global cache-max-size "500M" 防止 repo/ 膨胀失控,或对 CI 环境加 --no-cache 强制跳过读缓存(但仍会写临时文件到 sys_get_temp_dir())。

















