Composer默认只装稳定版,因minimum-stability硬性设为stable;需通过stability-flags按包放宽或--stability=dev临时绕过,prefer-stable仅影响选择倾向而非准入门槛。

Composer 默认只装稳定版,想用开发版必须显式声明 —— 否则哪怕 dev-main 有更新,composer install 也完全无视。
为什么 composer require 装不到 dev-master
不是网络或权限问题,是 Composer 的稳定性约束在起作用。它默认把 minimum-stability 设为 stable,所有包都按这个门槛过滤。即使你写 composer require vendor/pkg:dev-master,只要 minimum-stability 是 stable,且没配 prefer-stable 或对应 stability-flags,命令就会失败或退回到最新 stable 版。
- 检查当前设置:
composer config minimum-stability(通常输出stable) - 临时绕过(不推荐长期用):
composer require vendor/pkg:dev-master --stability=dev - 真正生效的方式是改
composer.json:加上"minimum-stability": "dev",但会波及所有包 - 更安全的做法是只针对某个包放宽:
"stability-flags": {"vendor/pkg": "dev"}
prefer-stable 和 minimum-stability 到底谁优先
prefer-stable 不改变约束逻辑,只影响“选择倾向”;minimum-stability 才是硬性准入门槛。比如设了 "minimum-stability": "beta" + "prefer-stable": true,Composer 会优先选 1.2.0(stable),但如果只有 1.3.0-beta1 和 1.3.0-rc1 符合 beta 及以上,它就从中挑 stable 程度最高的那个 —— 不会退回去找 1.2.0,因为 1.2.0 本身已低于 beta 门槛。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
minimum-stability是“能用哪些”,prefer-stable是“在能用的里面优先挑哪个” - 设
"minimum-stability": "dev"后,prefer-stable仍有效:它会让 Composer 尽量选1.2.0而非dev-main,只要两者都满足 dev 门槛 - 生产环境应保持
"minimum-stability": "stable",靠stability-flags个别放行
上线前必须清理的开发版残留
很多团队在预发布环境用了 dev-develop 测试新功能,上线时只改了代码,忘了切回稳定版本。结果 composer.lock 里还锁着 "reference": "a1b2c3d..." 的 dev 分支提交,下次 composer install 依然拉这个 commit —— 即使远程分支已重写、提交被 force-push 覆盖,也会因 lock 文件锁定而失效或报错。
- 上线前执行:
composer require vendor/pkg:^2.5(明确指定稳定版约束) - 确认
composer.lock中该包的version字段是类似"2.5.3",而非"dev-develop"或带reference的 hash - CI 流程中可加检查:
grep -q '"version":"dev-' composer.lock && exit 1 - 别依赖
composer update自动降级:它不会主动把dev-main换成2.5.3,除非你删掉require行再重加
最常被忽略的是:stability 设置会继承自 root composer.json,但项目中引入的私有 repo 或 path repo 若没显式配置 minimum-stability,其包的稳定性判断可能和预期不一致 —— 尤其当它们自己也有 composer.json 且写了不同值时。

















