Packagist 仅索引公开 Git 仓库中的 composer.json,需满足:仓库公开、含合法 composer.json(含 name、type、autoload)、name 格式为 vendor/package 且 vendor 与 Packagist 账号一致、文件位于 main/master 分支根目录,并在 Packagist 提交 URL;提交失败主因是 name 不匹配、仓库私有、命名不一致或未设 webhook;自动更新依赖语义化 tag(如 v1.0.0)推送,version 字段应留空;autoload 配置错误、缺失 require、PHP 版本约束过严、缺 license 字段亦会导致安装或使用异常。
Packagist 不接受手动上传,必须通过 GitHub/GitLab 等公开仓库自动同步 —— 这是绝大多数人卡住的第一步。
你的 GitHub 仓库是否满足 Packagist 的自动发现前提?
Packagist 本身不托管代码,只索引公开 Git 仓库中的 composer.json。要被成功抓取,必须同时满足:
- 仓库为 公开(public),且包含合法的
composer.json(至少有name、type、autoload) -
name字段格式为vendor/package,且vendor必须与你的 Packagist 账号用户名完全一致(大小写敏感) - GitHub 仓库的
main(或master)分支根目录下存在该文件 - 你已在 Packagist 登录并点击右上角 “Submit” 输入仓库 URL(如
https://github.com/yourname/your-package)
为什么提交后显示 “Package not found” 或 “Invalid package name”?
这是最常触发的失败提示,原因集中在命名与权限上:
-
composer.json中的name值(如"myorg/my-pkg")和你在 Packagist 注册的用户名(myorg)不一致 → 修改name或改用对应账号提交 - GitHub 仓库设为私有 → Packagist 无法读取,必须设为 public
- 仓库名含下划线(
my_pkg)但name写成短横线(my-pkg)→ Packagist 严格校验,二者必须完全一致 - 未在 GitHub 设置 Packagist webhook(虽非必需,但推荐启用:进入仓库 Settings → Webhooks → Add webhook,Payload URL 填
https://packagist.org/api/github)
如何让 Packagist 自动更新新版本(tag)?
Packagist 默认只扫描 main 分支的最新 commit,但真正发布稳定版靠的是 Git tag。你需要: