要将 php 组件发布到 packagist,需先确保 github 仓库公开、含合规 composer.json(name 格式为 vendor/name、type=library、psr-4 autoload),再在 packagist 提交仓库 url 并启用自动更新(关联 github 账号),最后打符合 semver 的 annotated git 标签(如 v1.0.0)并推送,同时确认 github webhook 已激活。

想把写好的 PHP 组件发布到 Packagist,不是点几下就能上线的——Packagist 本身不托管代码,它只索引 GitHub/GitLab 等平台上的公开仓库,并校验 composer.json 是否合规。你得先让仓库可被发现、可被安装,再触发自动同步。
确保 GitHub 仓库公开且含有效 composer.json
Packagist 不接受私有仓库,也不解析本地路径或 ZIP 包。你的代码必须托管在公开 Git 平台(推荐 GitHub),且根目录下存在语法正确、字段完整的 composer.json。
-
name必须是vendor/name格式,且全小写、仅含字母数字和短横线(如myorg/http-client),不能与现有包名冲突 -
type建议设为library(非project),否则 Packagist 可能忽略自动更新 -
autoload必须声明 PSR-4 映射(如"MyOrg\HttpClient\": "src/"),否则用户require后无法自动加载类 - 运行
composer validate检查 JSON 结构和必填字段,避免因格式错误导致同步失败
在 Packagist 上提交仓库 URL 并启用自动更新
登录 Packagist 后,用右上角 Submit 按钮提交你的 GitHub 仓库主页 URL(如 https://github.com/myorg/http-client),不是 composer.json 链接,也不是 ZIP 下载地址。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 首次提交后,Packagist 会立即抓取并显示包信息,但默认关闭自动更新
- 进入该包页面 → 点击
Update→ 勾选Enable auto-updating→ 关联你的 GitHub 账号(需有仓库 admin 权限)→ 选择对应仓库 - 关联成功后,每次 push 到默认分支(通常是
main或master)都会触发 Packagist 自动拉取最新composer.json和版本标签 - 若使用非默认分支(如
dev),需在 Packagist 的Branch alias中手动配置,否则dev-dev这类开发版不会被识别
打 Git 标签前务必确认版本号语义化
Packagist 将 Git tag 视为正式版本(如 v1.0.0),但只识别符合 SemVer 规范的标签:以 v 开头 + 三位数字(v1.2.3),或无 v 前缀但纯数字点分(1.2.3)。其他格式(如 1.2、release-1.0)会被忽略。
- 打标签命令必须带
-a(annotated)参数:git tag -a v1.0.0 -m "Release 1.0.0",轻量标签(git tag v1.0.0)不会被 Packagist 读取 - 推送标签需显式执行:
git push origin v1.0.0或git push origin --tags;仅 push commit 不会触发新版本索引 - 若误推了非法标签(如
v1.0),需先在 GitHub 删除该 tag,再本地执行git tag -d v1.0 && git push origin :refs/tags/v1.0,否则 Packagist 会卡在验证失败状态
最常被跳过的一步是:没在 GitHub 仓库的 Settings → Webhooks 中确认 Packagist 的 webhook 是否激活。即使你勾选了自动更新,如果 GitHub 侧没收到回调请求,后续任何 push 或 tag 都不会同步过去——建议提交后立刻去 GitHub 仓库的 webhook 日志里看一眼响应状态码。










