packagist 不更新是因为 webhook 未配置“tag push events”或仓库/ composer.json 不合规。需勾选 github webhook 的 tag push、确保仓库公开、composer.json 在根目录且 name 格式正确,并用 force update 验证。

为什么打完 git tag v1.0.0 后 Packagist 还不更新?
不是缓存问题,也不是 Packagist 延迟——大概率是 Webhook 根本没触发。Packagist 不监听“代码推送”,它只认两类事件:Push to default branch(比如 main)和更关键的 Tag push。很多人只勾了 “Pushes”,却漏掉 “Tag push events”,结果打完 git push origin v1.0.0,Packagist 完全无感。
实操建议:
- 进 GitHub 仓库 →
Settings→Webhooks→ 点你配的 Packagist webhook 编辑 - 确认
Payload URL是https://packagist.org/api/github(注意:不是带 php.cn 链接的旧地址,2026 年已统一为官方域名) -
Content type必须选application/json - Events 部分:至少勾选
Just the push event,并单独勾选下方的 “Tag push events” - 保存后,立刻执行一次
git push origin --tags测试是否触发
GitHub Webhook 配好了,但 Packagist 页面仍显示 “Package not found”
这通常发生在首次提交时,Packagist 尝试 git clone 你的仓库失败,但错误不会弹窗提示,只藏在包页面的红色报错条里(比如 “Invalid composer.json: missing name” 或 “Repository not found”)。
常见原因和检查项:
- 仓库设为
Private—— Packagist 免费版只支持公开仓库,私有包必须用packagist.com订阅服务 -
composer.json不在仓库根目录,或字段缺失:name必须是小写vendor/package格式(如myorg/my-utils),不能含下划线、大写字母或空格 -
autoload字段存在但结构非法,例如 PSR-4 映射末尾少了反斜杠:"MyOrg\MyUtils\": "src/"中的\不可省略 - 你用的是 Gitee / GitLab?它们不原生支持 Packagist webhook,需手动调用
https://packagist.org/api/update-package接口,并传入username和apiToken
如何验证 Webhook 是否真生效?
别等新版本上线才确认。最直接的办法是去 Packagist 包页面点右上角 Edit → 找到 Force update 按钮(仅对已关联包可见),点一下。如果成功,页面顶部会闪出绿色提示:“Updated successfully”。如果失败,错误信息会明确告诉你卡在哪一步——比如 “Could not clone repository”,那就回头查 GitHub 权限或 URL 拼写。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
更进一步的验证方式:
- 在 GitHub webhook 设置页,点对应 hook 右侧的
Recent Deliveries - 点开最新一条,看
Response标签页:200 表示 Packagist 收到了;404 说明 URL 错了;400 或 500 通常是composer.json解析失败 - 临时在
composer.json里加个无效字段(如"xxx": true),再点Force update,观察是否报 “Invalid JSON” —— 这能反向确认 Packagist 确实在读你的文件
自动更新依赖 Webhook,但 Composer 本身没有 publish 命令
这是最常被误解的一点:composer publish、composer release 等命令根本不存在。Composer 是包管理器,不是发布平台。所谓“发布”,本质是两件事:你把带 composer.json 的公开仓库告诉 Packagist,再让它通过 Webhook 持续监听 Git 事件。
所以真正要做的只有三步:
- 确保 GitHub 仓库公开,且
composer.json合法、在根目录 - 去
packagist.org点Submit,填入仓库 URL,完成首次抓取 - 配置好 Webhook(重点:勾上 Tag push),之后每次
git push origin v2.0.0,Packagist 就会自动同步新版本
复杂点在于细节:命名空间路径是否匹配、tag 名称是否带 v 前缀、默认分支名是 main 还是 master……这些地方一错,自动更新就静默失效,而你还在刷新页面等它变绿。










