必须显式指定稳定性级别,否则 Composer 默认跳过 Alpha 版本;正确写法为 composer require vendor/package:1.2.3-alpha1 --stability=alpha,版本号须严格匹配 Packagist tag 或 composer.json 中声明,且需检查 composer.lock 中 version 字段和 source.type 是否正确。

必须显式指定稳定性级别,否则 Composer 默认跳过 Alpha 版本
composer require 命令里怎么写 Alpha 版本号
Alpha 版本不是靠“猜”出来的,它必须严格匹配包在 Packagist 上发布的 tag 或 composer.json 中声明的 version 字段。常见合法格式有:
-
vendor/package:1.2.3-alpha1(对应 Git tagv1.2.3-alpha1或1.2.3-alpha1) -
vendor/package:^1.2@alpha(安装 1.2.x 中最新的 alpha,如1.2.0-alpha3) -
vendor/package:dev-main#abc123(未打 alpha tag 时,用分支 + commit hash)
错误写法包括:1.2.3-alpha(缺数字)、1.2.3.ALPHA1(大小写/分隔符错)、1.2.3-alpha1@dev(@dev 和 @alpha 冲突)。
不加 --stability=alpha 就会装失败
Composer 默认只接受 stable 版本,即使你写了 :1.2.3-alpha1,它也会报 Could not find a matching version —— 因为稳定性校验先于版本解析。
- 临时方案:加
--stability=alpha参数,例如:composer require vendor/package:1.2.3-alpha1 --stability=alpha - 不推荐永久改
"minimum-stability": "alpha",这会让所有依赖都允许 alpha,风险太高 - 更稳妥的组合是:
"prefer-stable": true+--stability=alpha,这样只对目标包降级,其余仍走 stable
装完发现还是 dev 分支?检查 composer.lock 的 source.type
你以为装了 1.2.3-alpha1,结果 vendor/ 里是最新 commit,大概率是 Composer 把版本号当成了分支名(比如误解析成 dev-1.2.3-alpha1)。
- 打开
composer.lock,找到该包条目,确认version字段是"1.2.3-alpha1",且source.type是"dist"(不是"source") -
source.reference应为空或短哈希(如"def456"),**不是长 commit hash**;若是长 hash,说明拉的是dev-main - 临时解法:删掉
vendor/和composer.lock对应条目,再跑一次composer install
Alpha 版本往往没经过完整测试,连 composer validate 都可能报 warning,别跳过验证步骤;另外,Packagist 页面标了 abandoned?点进去看推荐替代包,硬装旧 alpha 可能在 runtime 直接 fatal error。











