您的位置:首页 >Composer如何发布包新版本_Composer包版本发布教程【详解】
发布于2026-04-24 阅读(0)
扫一扫,手机访问
新版本打完 git tag,眼巴巴等着它出现在 Packagist 页面上,结果却石沉大海?这通常不是缓存延迟,真相是:Packagist 根本没有收到更新通知。它本身并不主动轮询你的仓库,更新完全依赖于 GitHub Webhook 的触发。

不少人以为执行完 git push --tags 就万事大吉,回头一看 Packagist 页面上的“Last updated”时间却纹丝不动。这可不是简单的延迟,十有八九是 Webhook 配置压根没通。
https://www.php.cn/link/ec811d0d775adc62776ba80fadd4ed19/api/github(注意,这里不是 packagist.org 的域名)。application/json,如果误选了 application/x-www-form-urlencoded,Webhook 会静默失败。Tag push events——只勾选 Just the push event 是没用的,因为标签推送是一个独立的事件类型。Recent Deliveries,只有状态码显示为 200 才算真正接通。Packagist 只识别符合语义化版本格式的 Git 标签,并且对大小写和前缀有严格规定。它完全忽略你 composer.json 文件里的 version 字段,判断版本的唯一依据就是 Git tag 的名字。
v1.0.0、1.2.3、v2.1.0-beta.11.0(缺少补零)、release-1.0.0(带有额外前缀)、1.0.0-final(带有后缀)、V1.0.0(大写字母V)git tag v1.0.0 && git push origin v1.0.0,只在本地打标签而不推送,等同于没有发布。git tag -a),某些旧版本的 Packagist 在解析时可能会失败。统一使用轻量标签更稳妥:git tag v1.0.0。Packagist 在首次抓取包信息时,会严格校验 composer.json 中的关键字段。任何一个错误都可能导致页面显示 Invalid package information 或 Repository not found。更常见的情况是,用户安装后一调用就报 Class not found,这多半是 autoload 的映射配置出了问题。
name 字段 必须遵循 vendor/name 格式,全部小写,只允许字母、数字和短横线:例如 myorg/http-client ✅,而 MyOrg/HttpClient ❌ 或 myorg_http_client ❌ 都是无效的。psr-4 自动加载规范 时,命名空间末尾的反斜杠不能遗漏:正确写法是 "MyVendor\MyPackage\": "src/"。如果写成 "MyVendor\MyPackage": "src/",在 Windows 环境下可能导致自动加载失效。type 字段 虽然有默认值,但显式地写成 "type": "library" 可以避免在某些平台(如 Lara vel Nova)的自动注册逻辑中失效。composer dump-autoload 命令来更新 Composer 的自动加载器缓存。否则,你测试的仍然是旧的类映射,Class not found 的错误会误导你的排查方向。最后,还有一个最容易被忽略的细节:当你修改了 composer.json 文件后,即使 Webhook 触发了,Packagist 也不会自动重新抓取并解析这个配置文件。此时,你必须手动前往 Packagist 的包管理页面,点击那个“Update”按钮,否则它将会一直使用旧的配置信息来索引你的新标签。
Packagist 不自动更新是因未正确配置 GitHub Webhook 或 tag 格式错误:Payload URL 必须为 https://www.php.cn/link/ec811d0d775adc62776ba80fadd4ed19/api/github,Content type 选 application/json,勾选 Tag push events;tag 名须严格符合语义化版本(如 v1.0.0),且需推送远程;composer.json 的 name、autoload 等字段必须规范,修改后需手动点击 Packagist 页面“Update”。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9