Composer执行update时复用的缓存文件位于~/.composer/cache/files/(Linux/macOS)或%APPDATA%\Composer\Cache\files\(Windows),按vendor/name/hash/结构存储压缩包,元数据缓存则在repo/子目录下。

composer update 用的缓存文件在哪
Composer 执行 update 时,主要复用两类本地缓存:包文件(.zip 或 .tar.gz)和元数据(packages.json、provider 映射等)。它们不混在一起,而是分目录存放,路径由 COMPOSER_CACHE_DIR 决定,默认是 ~/.composer/cache(Linux/macOS)或 %APPDATA%\Composer\Cache(Windows)。
怎么确认当前生效的缓存路径
别猜,直接问 Composer:
- 运行
composer config --global cache-dir,输出就是它实际读写的根目录 - 该路径下必有三个关键子目录:
files/(存下载的压缩包)、repo/(存元数据)、vcs/(存 Git 克隆副本) - 如果你设过
COMPOSER_HOME环境变量,cache-dir可能落在$COMPOSER_HOME/cache下,而非默认位置
files/ 目录里怎么快速找到某个包的缓存版本
files/ 不按版本号组织,而是按 vendor/name/hash/ 结构存——hash 是 dist URL 的 SHA256 或 Git commit。想查 monolog/monolog 缓存了哪些版本:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 进
~/.composer/cache/files/monolog/monolog/(Linux/macOS)或对应 Windows 路径 - 执行
ls -1,每个子目录名就是一个缓存过的版本实例(比如9a8b7c...、f1e2d3...) - 想看具体对应哪个 tag/commit?进任一 hash 目录,读
metadata.json里的version和reference字段
repo/ 下的 packages.json 是不是每次 update 都会更新
不会自动刷新。Composer 会复用 ~/.composer/cache/repo/https---packagist.org/packages.json 里的旧快照,哪怕 Packagist 上已发布新版。这就是为什么 composer update 显示 “nothing to install or update” 却拉不到新包——元数据没更新。
- 删掉整个
~/.composer/cache/repo/https---packagist.org/目录,才能强制重拉 - 删完后跑
composer update --dry-run -v,看到Downloading https://packagist.org/packages.json才算真正生效 -
composer clear-cache会清repo/,但如果你之前手动改过repo/权限或它被 IDE 锁住,可能删不干净,建议手动rm -rf
缓存路径本身不难找,难的是理解哪部分缓存影响哪类行为:改 files/ 解决解压失败,动 repo/ 才能解决“装不到新版”。很多人删了 cache-dir 却漏掉 vendor/composer/installed.json 和 composer.lock,结果 update 还是卡在旧版本——这两份文件虽不在缓存目录里,却是 update 逻辑绕不开的本地状态。

















