minimum-stability 必须写在 composer.json 顶层根对象中,与 require、autoload 同级;写在 config 或 extra 内将被忽略,且 rc 必须全大写、beta 不含 dev,其作用是单向稳定性过滤阈值。

它不是“我要装哪个版本”,而是“哪些版本连候选资格都没有”——设错值、放错位置、漏配配套项,三个里占一个,配置就等于没写。
minimum-stability 必须写在 composer.json 顶层,不能塞进 config 或 extra
这个字段只在 composer.json 的根对象层级有效,和 require、autoload 同级。写在 "config": {"minimum-stability": "beta"} 或 "extra": {...} 里,Composer 完全无视。
- ✅ 正确写法:
{"minimum-stability": "beta", "prefer-stable": true, "require": {...}} - ❌ 错误写法:
{"config": {"minimum-stability": "beta"}}(被忽略) - ❌ 错误写法:
{"extra": {"minimum-stability": "RC"}}(无效) - 验证是否生效:运行
composer config minimum-stability,有输出才是真写对了
RC 必须全大写,beta 不包含 dev,稳定性是单向门槛
minimum-stability 是过滤闸,不是调节旋钮。它按稳定性从低到高排序:dev alpha beta RC stable,设成某个值,就只允许该值及更稳定的版本进入候选池。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
"minimum-stability": "beta"→ 允许v2.0.0-beta1、v2.0.0-RC1、v2.0.0,但跳过所有dev-main和v1.9.0-alpha2 -
"minimum-stability": "RC"→ 必须写"RC",写"rc"或"Rc"都无效,会退回到默认stable -
"minimum-stability": "dev"→ 最宽松,但风险最高;它不把v2.0.0-beta1“升格”为 stable,只是放行它参与安装竞争
不配 prefer-stable: true,minimum-stability 就等于开了个口子却不设优先级
只设 "minimum-stability": "beta",不加 "prefer-stable": true,Composer 在满足条件的多个版本中,会优先选“最新”的那个,而不是“最稳”的那个。
- 比如某包同时有
v2.5.0(stable)和v2.6.0-beta2(beta),未配prefer-stable时可能装后者 -
"prefer-stable": true必须和minimum-stability同时存在才起效;单独写它没用 - 生产环境强烈建议始终配这对组合:
"minimum-stability": "stable"+"prefer-stable": true
报错 Could not find a version of package matching your minimum-stability,大概率不是配置问题
这个错误本质是“有策略、无候选”——你设了 "minimum-stability": "beta",但目标包压根没发布任何 beta 及以上标签的版本。
- 先查真实可用版本:
composer show -a vendor/package,看输出末尾括号里的稳定性标记,比如v2.0.0-beta1 (beta) - 如果只看到
v1.5.0 (stable)却 require"vendor/package": "^2.0@beta",必然失败 - 私有包或 GitHub 新推的分支(如
dev-feature),composer show -a查不到,得手动加仓库源 - 更安全的做法是保持
minimum-stability为stable,只对单个包显式加后缀:"monolog/monolog": "dev-main"或"spatie/laravel-ray": "^2.0@beta"
最容易被忽略的一点:改完 composer.json 后,必须运行 composer update --lock(或 composer update),否则 composer.lock 仍按旧策略锁定版本,新设置完全不生效。










