包在packagist显示“could not find package”或仅见dev-main而非v1.0.0,根本原因是未打合规tag、composer.json字段不合法(name须小写vendor/package-name、无version、psr-4 autoload末尾反斜杠和斜杠不可少)、或github webhook未正确配置(payload url为https://packagist.org/api/github,须勾选tag push events)。

你的包在 Packagist 上显示 “Could not find package” 或安装时提示 dev-main 而不是 v1.0.0,基本可以断定:没打合规 tag、composer.json 字段不合法、或 GitHub webhook 没配好——三者缺一不可。
确保 GitHub 仓库公开且根目录有合规的 composer.json
Packagist 不读本地文件,也不扫描私有库,它只抓取你提交的公开 HTTPS 地址。常见失败点:
-
name必须是小写vendor/package-name格式,比如myname/http-client;MyName/HttpClient、myname_http_client、myname/my client全部被拒 -
vendor部分必须和你在 Packagist 注册的用户名完全一致(不是 GitHub 用户名,除非你已手动同步) - 删掉
version字段——Packagist 完全忽略它,留着反而干扰 tag 解析 -
autoload至少得有psr-4,例如{"psr-4": {"MyName\HttpClient\": "src/"}};注意命名空间末尾的\和路径末尾的/都不能少 - 本地先跑
composer validate,比提交后等报错快得多
打 Git tag 的正确命令和必须验证的细节
Packagist 不认分支,只靠 tag 生成稳定版本。没 tag 就没有 1.0.0,用户 require 时默认不拉 dev-main。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- tag 名必须是标准语义化格式:
v1.0.0、v2.1.3-beta.1✅;1.0、V1.0.0、v1.0.0-final❌ - 命令要完整:
git tag -a v1.0.0 -m "First stable release"→git push origin v1.0.0(别只git push --tags,容易误推测试用的devtag) - tag 指向的 commit 里,
composer.json必须已提交且通过composer validate - 改旧 tag?别
git push --force—— Packagist 不会自动刷新,必须手动点包页右上角Update
配置 GitHub webhook 是自动更新的唯一方式
2023 年底起 Packagist 彻底关闭自动发现,没 webhook = 每次发版都得手动点 Update,90% 的“刚推了 v2.0.0 却装不上”都卡在这步。
- Payload URL 填
https://packagist.org/api/github(不是带?username=的旧地址,也不是镜像站) - Content type 选
application/json - Events 勾选
Just the push event(覆盖 tag 推送),或明确勾选Tag push events;别选Everything,易触发失败 - 配好后去 GitHub Webhook 的
Recent Deliveries查状态码,200才算通 - 验证是否生效:再推一个
v1.0.1,几秒内 Packagist 页面右上角Last updated时间应变化
提交到 Packagist 后仍看不到版本?检查这三点
提交 URL 后 Packagist 会立即抓一次,默认走 main 或 master 分支根目录下的 composer.json,但不会自动建版本。
- 首次提交成功后,页面显示
dev-main是正常现象;只有打了第一个合规 tag(如v1.0.0)并被 webhook 触发抓取,才会生成稳定版 - 如果页面一直显示
This package is not auto-updated,说明 webhook 没生效,不是 Packagist 问题 - 用户执行
composer require myname/my-package:^1.0失败,优先查git ls-remote --tags origin确认 tag 是否真推上去了,再看 Packagist 页面Last updated时间是否更新
最常被忽略的是:Packagist 不验证代码逻辑,也不运行测试;哪怕 src/ 目录为空,只要 composer.json 过了校验,包就能装上——但用户 require 后立刻报 Class not found。所以 autoload 映射是否真实可加载,得你自己测。










