必须同时删除 vendor 和 composer.lock,再执行 composer clear-cache 后紧跟 composer install --no-cache,才能确保完全重装所有包;仅删其一或单独使用 --force-reinstall/--refresh 均无效。

删 vendor 和 composer.lock 是硬性前提
只删 vendor 目录,Composer 仍会按 composer.lock 里的哈希值从缓存还原;只删 composer.lock,composer install 可能直接报错 No composer.lock file present 或拒绝执行。二者必须一起删,顺序无关,但缺一不可。
Linux/macOS 执行:rm -rf vendor composer.lock
Windows(PowerShell)执行:Remove-Item -Recurse -Force vendor, composer.lock
注意:composer.lock 是线上环境一致性的依据,删之前务必确认已提交到 Git;否则重生成的 lock 文件可能引入版本漂移。
clear-cache 和 --no-cache 必须配合使用
composer clear-cache 只清掉 ~/.composer/cache/(或 %APPDATA%\Composer\Cache)下的 ZIP、元数据和 VCS 缓存;它不跳过缓存逻辑,下次 install 仍会自动重建并复用旧记录。
--no-cache 是告诉 Composer “本次完全不查本地缓存目录”,强制发 HTTP 请求——但它不清理磁盘上已存在的 ZIP 包,所以单独用没用。
正确顺序是:composer clear-cache
→ 确认输出含 Clearing cache (all)
→ 紧接着运行 composer install --no-cache
CI/CD 中更稳妥:COMPOSER_CACHE_DIR=/dev/null composer install --no-cache,彻底绕过缓存路径,避免挂载卷残留影响。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
镜像源本身有 CDN 缓存,本地清了也不一定生效
阿里云、腾讯云等镜像源响应头带 X-Composer-Cache-TTL,本地 clear-cache 对它们无效。你看到的“404 找不到新版本”或“始终拉不到 v3.6.0”,大概率是镜像节点缓存未刷新。
验证方式:执行 composer update monolog/monolog -v,看日志是否出现 Downloading https://mirrors.aliyun.com/composer/p/monolog/monolog/;若没出现,说明镜像配置没生效。
临时绕过方法:composer config -g repo.packagist composer https://packagist.org
再跑 composer clear-cache && composer install --no-cache,可确认是否为镜像源问题。
私有包更新后行为异常?先检查是否推了新 tag + 新 commit,否则 Composer 根本不会触发远程校验,清缓存也无用。
别信 --force-reinstall 或 --refresh 单独能重下所有包
composer install --force-reinstall(≥2.2)只是自动删 vendor 再装,仍走缓存;composer update --refresh(≥2.5)只刷新 repo/ 下的元数据(比如 packages.json),ZIP 包还是从 files/ 读。
真正重下每个包,必须同时满足:
• vendor 和 composer.lock 已删
• composer clear-cache 已执行且 downloads/ 子目录为空
• 安装命令带 --no-cache(或 COMPOSER_CACHE_DIR=/dev/null)
容易被忽略的是:某些 CI 环境把 ~/.composer/cache 挂到 NFS 或自建共享目录,clear-cache 默认只清 composer config --global cache-dir 指向的路径,不会遍历所有可能位置。










