私有仓库中声明alpha/beta版本需严格遵循语义化标签格式(如v2.1.0-alpha.1)、composer.json中version字段留空或与tag一致,并确保私有索引服务启用预发布版本抓取。

私有仓库中如何正确声明 alpha/beta 版本
Composer 不会自动识别你打的 Git tag 是 alpha 还是 beta,它只认 composer.json 里声明的 version 字段或 Git tag 的语义化格式。你在私有仓库(如 GitHub/GitLab)中发布预发布版本时,必须确保:
- Git tag 名严格遵循语义化版本 + 稳定性后缀,例如
v2.1.0-alpha.1、v2.1.0-beta.3,不能写成2.1.0-alpha1或v2.1.0.ALPHA - 私有包根目录下的
composer.json中version字段要么留空(推荐),要么与 tag 完全一致;若填了错误值(如"version": "dev-main"),Composer 会拒绝解析该 tag 对应的稳定性 - 私有仓库需被 Packagist 私有实例(如 Private Packagist)或自建 Satis/SatisPress 索引,且索引服务要启用对非 stable tag 的抓取(部分私有索引默认跳过 alpha/beta)
require 时指定 beta 版本却装了 stable?检查这三处
即使你写了 "your-org/your-pkg": "2.1.0-beta.2",composer install 仍可能降级到 2.1.0 —— 根本原因不是写法错,而是约束未生效:
-
composer.lock已锁定旧版本:删掉整个 lock 文件,或至少删掉packages和packages-dev中该包的条目 -
minimum-stability未覆盖:项目级配置是全局开关,若设为"stable",单靠版本字符串无法突破限制,必须加--stability=beta或临时改配置 - 依赖冲突未显式解除:运行
composer update your-org/your-pkg --with-all-dependencies --stability=beta,而不是install;仅require不触发重解
安全放宽稳定性:prefer-stable + 显式 @beta 更可靠
在生产项目中直接设 "minimum-stability": "beta" 风险很大——它会让所有依赖都接受 beta,包括你没意识到的底层库。更稳妥的做法是:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 保持
"minimum-stability": "stable"不变 - 启用
"prefer-stable": true(默认已开启,显式声明更清晰) - 对目标包使用带稳定性标记的约束:
"your-org/your-pkg": "^2.1@beta"或"your-org/your-pkg": "2.1.0-beta.2 as 2.1.0" - 执行
composer require your-org/your-pkg:^2.1@beta,命令行参数--stability=beta可省略,因 @beta 已明确指示
alpha 版本发布后本地测试失败?先确认 tag 是否被索引
私有仓库打完 v1.0.0-alpha.1 tag 后,本地 composer require 报 Could not find package... 或始终拉不到 alpha,大概率是索引延迟或配置遗漏:
- 如果是自建 Satis,检查
satis.json中是否包含"require-all": true或显式列出了该包,并确认已运行php bin/satis build satis.json web/ - 如果是 Private Packagist,进 Web UI 查看该包详情页,确认
v1.0.0-alpha.1出现在 Versions 列表且状态为beta/alpha(不是dev) - 本地执行
composer clear-cache,再用composer show your-org/your-pkg -a查看所有可用版本,确认 alpha 版本在列表中且 stability 标记正确
稳定性标签不是装饰——它决定 Composer 解析版本时的准入门槛。私有场景下,tag 格式、索引配置、lock 文件状态三者任一出错,都会让 alpha/beta 彻底失效。别只改 composer.json 就以为完事了。










