composer update 没拉到新代码是因为 composer.lock 锁定了精确 commit hash 或 dist shasum,且本地缓存的 packages.json 未更新,导致无法感知镜像站已发布的版本;需先 --refresh 清元数据,再 --no-cache 强制下载。

composer update 为什么没拉到新代码?锁文件和缓存都在“拦路”
不是命令失效,而是 composer.lock 里锁死了 exact commit hash 或 dist shasum,composer update 默认只在已有元数据里找匹配项——哪怕镜像站已发布 monolog/monolog 3.6.0,本地缓存的 packages.json 还是旧的,它就根本看不到这个版本。
-
composer install从不拉新代码,只按 lock 文件还原 vendor/;删了 vendor 目录也没用,它仍会从~/.composer/cache/解压旧 zip - 常见现象:终端只输出
Nothing to install or update,连Downloading行都不出现 - 镜像同步有延迟(阿里云/腾讯云通常 15–30 分钟),但 Composer 不主动刷新元数据,除非你明确打断它
强制拉取最新包的两步实操法(Composer ≥ 2.5)
必须同时清元数据 + 强制走网络下载,缺一不可:
- 先运行
composer update --refresh:清掉~/.composer/cache/repo/下所有packages.json,从当前镜像源重载元数据 - 紧接着执行
composer update vendor/package --no-cache:跳过 ZIP 缓存,强制发起https://请求下载 - 验证是否真拉了新包:终端必须出现
Downloading https://,且时间戳是当前秒级;否则仍是缓存兜底
只想更新单个包,不升级子依赖?参数漏一个就翻车
默认 composer update monolog/monolog 会连带升级它的子依赖(比如 psr/log),容易引发隐式变更。安全做法是:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 在
composer.json中把目标包写成精确版本号,例如"monolog/monolog": "3.5.0" - 执行
composer update monolog/monolog --no-update-with-dependencies(Composer 2.5+) - 检查
vendor/monolog/monolog下文件修改时间是否刷新,才算真正重拉
开发版(dev-main)不是“更先进”,而是“随时可能 break”
只有当你明确要测试某个 PR 或给 Composer 提 issue 附复现环境时才需要。误当稳定版长期使用,CI 突然失败的概率极高:
- 开发版不自带
composer.lock,首次运行会自动拉依赖,耗时长 - 不能用
self-update升级,得手动git pull - Ubuntu/Debian 默认禁用
phar扩展,不手动开启会报Phar extension is not available - 别用
--ignore-platform-reqs或--force-reinstall混搭 dev 分支,它们不解决元数据可见性问题
最易被忽略的点:删 composer.lock 后直接跑 composer install 会报错,真正触发重算的是 composer update;而它生成的新 lock 可能选中你完全没测过的高 patch 版本,上线后才暴露 break change。

















