minimum-stability必须写在composer.json根对象顶层,与require同级,是硬性过滤闸而非偏好设置;合法值为dev/alpha/beta/rc/stable(rc须全大写),仅约束未显式标注稳定性的包,且必须配合prefer-stable:true和composer update --lock生效。

composer.json 里 minimum-stability 必须写在顶层
它不是配置项,是硬性过滤闸——写错位置等于没写。minimum-stability 必须和 require、autoload 同级,放在 JSON 根对象里。塞进 config 或 extra 里,Composer 完全无视,还不报错。
正确示例:
{
"minimum-stability": "beta",
"prefer-stable": true,
"require": {
"topthink/think-swoole": "^4.0@beta"
}
}
常见错误:
-
"config": { "minimum-stability": "beta" }→ 无效 -
"extra": { "minimum-stability": "RC" }→ 无效,且RC写成rc或Rc也会退回到默认stable
minimum-stability 值必须小写,RC 是唯一例外
minimum-stability 合法值只有五种:dev、alpha、beta、RC、stable,全部小写,唯独 RC 必须全大写。写成 rc 或 Rc,Composer 静默忽略,直接回退到默认 stable。
它的作用是“放行下限”,不是“最高容忍”:
-
"minimum-stability": "beta"→ 允许beta、RC、stable(自动包含更低的alpha,但不包含dev) -
"minimum-stability": "dev"→ 最宽松,匹配dev-main、v4.0.0-dev等,但风险极高,生产环境慎用 -
"minimum-stability": "stable"→ 默认值,只接受无后缀或带-stable的正式版,如3.2.0
仅设 minimum-stability 不足以装上 beta 或 dev 版本
这个字段只约束“没显式写稳定性后缀”的包。比如 "monolog/monolog": "^3.0" 会受它影响;但 "monolog/monolog": "^3.0@beta" 就完全绕过它——你得在 require 里手动加 @beta、@dev 这类后缀。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
想装 phpunit/phpunit 的主干分支?不能只靠 "minimum-stability": "dev",还得写:"phpunit/phpunit": "dev-main@dev"。
验证真实可用版本:
- 运行
composer show -a vendor/package-name,看输出末尾括号里的标签,例如v2.0.0-beta1 (beta)或dev-main (dev) - 如果只看到
v1.5.0 (stable),却写了"vendor/package": "@beta",那必然失败——beta 版本压根不存在
prefer-stable: true 不是可选,是稳定性的刹车片
prefer-stable: true 不改变可安装范围,只影响“选哪个”。它必须和 minimum-stability 同时存在才起效;单独写没用。
没有它,哪怕你设了 "minimum-stability": "beta",Composer 也可能在 v2.4.0 (stable) 和 v2.5.0-beta3 (beta) 之间选后者——只因版本号更高。
改完必须运行 composer update --lock:
-
composer install只还原composer.lock里的版本,不会重新决策 -
composer update --lock强制重解析依赖并刷新锁文件,否则新设置形同虚设 - 若只想更新单个包,用
composer update vendor/package更安全,避免波及其他依赖
最常被忽略的一点:即使配置全对,composer.lock 里已锁定的 dev-main 不会自动被替换——必须触发重解析,否则偏好策略根本没机会生效。










