安装 beta 版本需在版本约束中显式添加 @beta 稳定度标识,如 "^3.0.0@beta" 或 "@beta",不可用 dev-master;漏写或命名不匹配(如缺 -beta 后缀、用错 rc/beta)将导致安装失败。

composer install 某个包的 beta 版本
直接指定带稳定度标识的版本号即可,composer require 会按规则解析并锁定对应分支或 tag。关键不是“怎么装”,而是“怎么写对版本约束”。
常见错误是写成 dev-master 或 dev-develop —— 这些是开发分支,不等价于 beta;或者漏掉 -beta 后缀,导致拉到 stable 版本。
- 想装
monolog/monolog的 3.0.0-beta1:运行composer require monolog/monolog:^3.0.0@beta - 想装最新可用的 beta(不限定具体小版本):用
composer require vendor/package:@beta - 如果包没打
-betatag,只有v3.0.0-beta1这类命名,就得写成^3.0.0-beta1,不能省略-beta1
composer.json 里手动写 beta 版本约束
编辑 composer.json 的 require 字段时,版本字符串必须显式包含稳定度标识,否则 Composer 默认只接受 stable 级别。
例如:"phpunit/phpunit": "^10.5.0@beta" 是有效的;但写成 "^10.5.0" 就不会命中 beta 版本,哪怕它存在。
- 支持的稳定度关键词有:
@stable、@RC、@beta、@alpha、@dev -
@beta会匹配所有-beta、-beta1、-beta2等后缀的 tag - 加了
@beta后,Composer 会自动启用minimum-stability允许该级别,但仅限这一行生效,不影响其他依赖
全局 minimum-stability 设为 beta 的风险
在 composer.json 里设 "minimum-stability": "beta" 看似一劳永逸,实际非常危险——它会让所有未显式标注稳定度的依赖都降级去匹配 beta 版本。
你可能只想要一个测试包走 beta,结果 symfony/console、laravel/framework 全部被拉成不稳定快照,CI 直接挂掉。
- 除非你在做内部工具链验证,否则不要动这个全局配置
- 真要批量允许 beta,优先用
"prefer-stable": true+ 单条@beta约束组合 -
minimum-stability是项目级兜底策略,不是版本选择开关
安装失败提示 “Could not find package … matching your minimum-stability”
这是最常遇到的报错,根本原因不是网络或源问题,而是 Composer 认为当前约束下没有满足稳定度要求的版本可选。
检查点很窄:是不是漏写了 @beta?是不是包本身根本没发布任何带 -beta 的 tag?
- 用
composer show vendor/package --all查看该包所有可用版本及对应 stability 标签 - 注意有些作者用
rc代替beta,比如v2.0.0-RC1,这时得写@RC而非@beta - 如果
show结果里压根没列出 beta 版本,说明还没推送到 Packagist,或用了私有源但没配置镜像
beta 版本的 tag 命名不统一是最大干扰项,有人写 1.0.0-beta.1,有人写 v1.0.0-beta1,还有人只打 beta 分支——这些都会影响 @beta 是否生效。动手前先 show --all 看一眼真实发布的版本字符串。










