packagist 不自动索引 github 仓库,必须同时满足三条件:手动提交仓库 url、打带 v 前缀的 tag(如 v1.0.0)并推送到远程、配置有效 webhook;缺一即导致 composer require 报 “could not find package”。

Packagist 不是“上传平台”,它只索引你已公开在 GitHub/GitLab 上的仓库;你本地写完 composer.json、打好 v1.0.0 标签、推到远程,再提交 URL,它才开始工作——没这三步,composer require 一定失败。
为什么 composer require vendor/name 报 “Could not find package”
最常见原因不是包不存在,而是 Packagist 根本没抓到你的仓库或版本。检查以下几点:
- GitHub 仓库是否为 Public?Private 仓库提交后必报
Repository not found -
composer.json是否在仓库根目录?且含合法name字段(如myorg/my-http-client,全小写、无下划线、必须含斜杠) - 是否打了语义化 tag 并 推送到远程?仅
git tag v1.0.0不够,必须git push origin v1.0.0 - 首次提交后是否配了 GitHub Webhook?没配就只能手动点 Packagist 页面右上角的
Update,否则新 tag 永远不会被发现
如何让 Packagist 正确识别你的 autoload 路径
类找不到(Class not found)几乎都出在这里,不是 Packagist 拒绝索引,而是用户 require 后自动加载失败:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
psr-4映射末尾的反斜杠不能漏:"MyOrg\MyPackage\": "src/",不是"MyOrg\MyPackage": "src/" - 路径
"src/"必须真实存在,且其下要有匹配命名空间的子目录(如src/MyPackage/对应MyOrgMyPackage) - 别在
composer.json里写version字段——Packagist 完全忽略它,只认 Git tag;写了反而容易和 tag 冲突 - 本地验证用
composer dump-autoload -d /path/to/your/repo,比等用户报错更早发现问题
Webhook 配错了会怎样?怎么确认它真生效
没生效的表现很明确:你 git push origin v1.0.0 后,Packagist 页面右上角 Last updated 时间不变,或者 Recent Deliveries 里状态码不是 200:
- Payload URL 必须填
https://packagist.org/api/github(注意不是 php.cn 域名的旧地址) - Content type 选
application/json,不是application/x-www-form-urlencoded - Events 勾选
Tag push events或至少Just the push event;只勾Pushes可能漏掉 tag - 推送 tag 后,立刻去 GitHub 仓库 Settings → Webhooks → 点开刚加的 webhook → Recent Deliveries 查响应状态;200 才算通
真正卡住人的地方,往往不是技术细节记不住,而是以为“提交 URL 就完了”。其实 Packagist 第一次抓取只是快照,之后全靠 webhook 推动;而 webhook 的配置项(比如 Content type 选错、URL 多了个斜杠、events 漏勾)又极难肉眼排查——建议每次配完,先推一个测试 tag 验证,别等发正式版才发现断链。










