prefer-stable 是 composer.json 中的配置项,用于优先选择稳定版本依赖。当设置为 true 时,Composer 在满足版本约束前提下,自动选用如 1.0.0 类的正式版,避开 dev、alpha、beta 等开发版本,提升项目稳定性。例如有 ^5.4 约束时,会选 v5.4.0 而非 dev-main。配置方式为在 config 中添加 "prefer-stable": true,可作用于项目或全局。该选项仅为偏好,不强制排除不稳定版,明确指定时仍会安装。

在 composer.json 中,prefer-stable 是一个用于控制依赖包版本选择策略的配置项。它的主要作用是告诉 Composer 在安装或更新依赖时,优先选择已标记为“稳定版本”的包,即使存在更高版本的开发快照(如 dev-master、alpha、beta、RC 等)。
什么是稳定版本?
Composer 中的“稳定版本”通常指符合语义化版本规范的正式发布版本,例如:
1.0.0、2.1.3 等。
而 dev- 开头的分支、alpha、beta、rc 等被视为不稳定版本。
prefer-stable = true 的作用
当你设置 "prefer-stable": true 时,Composer 会:
- 在满足版本约束的前提下,自动选择最新的稳定版本
- 避免自动升级到开发版,即使该开发版版本号更高
- 提升项目整体稳定性,防止意外引入未完成或不稳定的代码
例如,假设你的 composer.json 中要求:"symfony/http-Foundation": "^5.4"
此时有两个可用版本:
v5.4.0(稳定) 和 dev-main(开发中)
如果 prefer-stable 为 true,Composer 将选择 v5.4.0。
如何配置 prefer-stable
在项目的 composer.json 文件中添加:
{ "config": { "prefer-stable": true } }
这个配置可以设置在全局或项目级别,影响对应范围内的依赖解析行为。
需要注意的是,prefer-stable 只是“偏好”稳定版,并不会强制排除不稳定版本。如果你的依赖明确要求某个 dev 分支,Composer 依然会安装它。
基本上就这些。合理使用 prefer-stable 能有效降低因依赖引入不稳定代码而导致的问题,适合大多数生产环境项目。


