Packagist 不托管代码且不自动扫描 GitHub,必须手动提交仓库 URL 并正确配置 GitHub Webhook(含 Tag push events),否则即使推送 v2.0.0 用户执行 composer require 仍报 “Could not find package”;确认 composer.json 基础校验通过需满足:name 为全小写 vendor/package-name 格式、无 version 字段、autoload 含合法 psr-4 映射(末尾反斜杠不可少)、type 显式设为 library,并用 composer validate --strict 本地预检。

Packagist 不托管代码,也不自动扫描 GitHub;你提交的只是仓库 URL,后续所有版本更新都依赖 GitHub Webhook 正确触发——没配好,v2.0.0 推上去了,用户 composer require 依然报 Could not find package。
怎么确认 composer.json 已通过 Packagist 基础校验
Packagist 首次抓取时只看几个硬性字段,错一个就直接拒收,不给重试机会。
-
name必须是全小写vendor/package-name格式,比如myorg/http-client;MyOrg/HttpClient或my_org/http_client都会失败 - 删掉
version字段——它被完全忽略,留着反而干扰 tag 同步 -
autoload至少得有psr-4,且末尾反斜杠不能少:"MyOrg\Http\": "src/",不是"MyOrg\Http": "src/" -
type显式设为library(哪怕默认值),避免被跳过索引 - 本地验证用
composer validate --strict,比等 Packagist 报错快得多
为什么打完 git tag v1.0.0 后 Packagist 还不更新
不是延迟,也不是缓存,90% 是 GitHub Webhook 没触发成功。Packagist 只认两类事件:push 到默认分支(如 main)和 tag push。很多人只勾了 “Pushes”,漏掉 “Tag push events”。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- Payload URL 必须是
https://packagist.org/api/github(不是带php.cn或?username=的旧地址) - Content type 必须选
application/json - Events 部分至少勾选
Just the push event,并单独勾选下方的Tag push events - 保存后立刻执行
git tag v1.0.1 && git push origin v1.0.1测试,几秒内看 Packagist 页面Last updated时间是否刷新 - 如果没变,去 GitHub Webhooks →
Recent Deliveries查状态码,200才算通
如何让新 tag 自动上线,而不是每次手动点 Update
手动点页面右上角 Update 只能救急,不可持续。Webhook 是唯一可靠方式,但配置细节极易出错。
- 首次在 Packagist 提交仓库 URL 后,它会尝试抓取一次,但之后所有新 tag 都依赖 Webhook 触发
- 如果你用 GitHub Releases 发版,Event 类型选
Releases更稳;否则选Just the push event即可 - 别选
Everything——可能因 payload 过大或格式异常导致失败 - 改过旧 tag?
git push --force不会通知 Packagist,必须手动点Update重抓 - 验证是否真生效:去 Packagist 包页 →
Edit→ 点Force update,成功会闪绿色提示,失败则明确告诉你卡在哪(比如Could not clone repository)
最常被忽略的是:Packagist 不运行测试、不检查 src/ 是否为空、也不验证类是否存在。只要 composer.json 过了校验、tag 推上去了、webhook 返回了 200,包就算“上线”了——但用户 require 后立刻 Class not found,问题八成出在 autoload 路径映射或命名空间结尾少了反斜杠。

















