Composer 的 minimum-stability 设定项目允许安装的最低包稳定性级别,默认 stable;合法值按稳定性升序为 dev < alpha < beta < RC < stable,如设为 beta 则仅允许 beta 及以上版本,dev 和 alpha 需显式指定才可安装。

Composer 通过 minimum-stability 配置项控制项目允许安装的包版本稳定性级别,默认是 stable。它不是强制要求每个包都达到该级别,而是设定“最低可接受的稳定性”,低于它的版本(如 dev-master、alpha)默认被排除,除非显式指定或用 require 中的版本约束覆盖。
minimum-stability 的取值和含义
合法值按稳定性从低到高排列为:dev zuojiankuohaophpcn alpha < beta < RC < stable。设置 "minimum-stability": "beta" 表示:只允许安装 beta 及以上(即 beta、RC、stable)的版本,alpha 和 dev 版本会被跳过,除非单独声明。
-
dev:开发分支(如dev-main、dev-develop),无固定版本号,随时可能变 -
alpha:早期测试版,功能不全,API 不稳定 -
beta:功能完整但未经充分验证,可能含严重 Bug -
RC(Release Candidate):候选发布版,基本稳定,只等最终确认 -
stable:正式发布版,推荐生产环境使用
如何在 composer.json 中设置
在根目录 composer.json 的顶层添加 minimum-stability 字段:
{
"minimum-stability": "beta",
"prefer-stable": true,
"require": {
"monolog/monolog": "^2.0"
}
}
注意:minimum-stability 是项目级全局策略,影响所有依赖。它和 prefer-stable 常配合使用——后者在满足 minimum-stability 前提下,优先选更稳定的版本(比如有 2.10.0 stable 和 2.11.0-beta1,会装前者)。
绕过 minimum-stability 的两种方式
即使设了 "minimum-stability": "stable",你仍可以个别引入不稳定版本,只需在 require 中明确写出带稳定标记的版本约束:
- 用完整稳定性标识:
"symfony/console": "6.4.x-dev"或"laravel/framework": "dev-main as 11.0" - 用带后缀的版本号:
"phpunit/phpunit": "10.5.0@beta"或"doctrine/orm": "3.0.0-alpha1"
这种写法会覆盖全局 minimum-stability,但仅限该包,不影响其他依赖。
常见误区与建议
很多人以为设成 dev 就能随便装 dev-master,其实还需确保包本身有对应分支或版本别名;另外,CI/CD 或团队协作中应避免随意设 dev,否则容易因分支变动导致构建失败。
- 生产环境强烈建议保持
"minimum-stability": "stable",必要时用@stable显式标注 - 开发阶段若需尝鲜新特性,可临时调低,但上线前务必回归
stable - 如果某个包只有
dev分支可用,优先查它是否发布了 alpha/beta 版本,比直接绑dev-main更可控
基本上就这些。关键不是选多高的值,而是让稳定性策略和你的发布节奏、测试能力匹配。










