发布成功的关键是三个硬性条件全部满足:公开仓库根目录有合法composer.json、name字段为小写vendor/package格式且与Packagist账号一致、打了带v前缀的语义化Git tag(如v1.0.0),缺一不可。

发布成功的关键不在于代码写得多好,而在于三个硬性条件是否全部满足:公开仓库根目录有合法 composer.json、name 字段格式与 Packagist 账号完全一致、打了带 v 前缀的语义化 Git tag(如 v1.0.0)。缺一不可,且 Packagist 不会告诉你哪条失败——只报 Invalid package information 或 Package not found。
composer.json 必须在公开仓库根目录且字段合法
Packagist 只读取默认分支(main 或 master)根目录下的 composer.json,首次抓取仅校验 name、type、autoload 三项。常见错误包括:
-
name含大写字母(MyOrg/http-client❌)、下划线(myorg/http_client❌)或 vendor 名与 Packagist 账号不一致(你在 Packagist 注册的是myorg,但写成yourorg/my-package❌) -
type留空或误设为project(普通库必须是library) -
autoload.psr-4映射末尾漏反斜杠("MyOrg\Http": "src/"✅,"MyOrg\Http": "src"❌)
本地验证务必运行:composer validate。报错就别提交——Packagist 不会提示具体哪一行错。
Git tag 必须带 v 前缀且显式推送
Packagist 完全忽略 composer.json 中的 version 字段,只认 Git tag 名。没 tag 就只有 dev-main,用户执行 composer require myorg/my-package 会直接报 Could not find package。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- tag 名必须符合语义化版本规范:
v1.0.0✅,1.0.0❌,v1.0.0-beta❌(不稳定版默认不被拉取) - 打完 tag 后必须显式推送:
git push origin v1.0.0,不是git push --tags(可能混入旧 tag 干扰解析) - 打 tag 的 commit 里,
composer.json必须已提交且合法,否则 Packagist 抓到的是空配置
GitHub webhook 必须配对且生效
2023 年底起 Packagist 彻底关闭自动发现,手动 Submit 只触发一次抓取。之后你推新 tag,Packagist 不会自动感知——除非 webhook 已生效。
- 进 GitHub 仓库 →
Settings→Webhooks→Add webhook - Payload URL 填
https://packagist.org/api/github(注意不是旧地址) - Content type 选
application/json,Event 类型勾选Tag push events - 保存后,点进该 webhook →
Recent Deliveries查状态码,200才算通
如果没配好,只能去 Packagist 包页点右上角 Update 补救,但无法持续依赖。
提交到 Packagist 后用户仍 require 不到?检查这三点
提交 URL 后页面显示 “Last updated: 3 days ago”,但新 tag 已推——大概率是以下某个环节断了:
- 仓库仍是私有:Packagist 只索引公开仓库,
Repository not found是最常见提示 - 提交时用了
git@github.com:这类 SSH 地址:Packagist 只认 HTTPS 格式(https://github.com/yourname/your-package) - 首次提交失败后,修改
composer.json或打新 tag,Packagist 不会自动重试——必须手动点Update
最易被忽略的是:tag 推送和 webhook 生效之间存在时间差,且 Packagist 对 autoload 映射路径大小写敏感(src/ 和 SRC/ 在 Linux 下就是两个路径),调试时建议用 composer require myorg/my-package:dev-main 先确认基础可拉取,再聚焦稳定版发布。

















