packagist 仅通过自动抓取 git 仓库的附注 tag(如 git tag -a v1.0.0)识别新版本,不依赖手动提交或 composer.json 中的 version 字段;需确保打规范 semver tag、启用 webhook 或手动点击 update 按钮。

Packagist 不接收手动提交,更新靠自动抓取 Git 仓库的 tag —— 你 push 了新 tag,它几秒到几分钟内就索引到,没“提交”这回事。
为什么 composer update 拉不到你的新版本?
常见现象:本地 composer update 还是旧版,packagist.org 页面也显示旧 tag;但你明明在 GitHub/GitLab 上打了新 tag 并 push 了。
- 没打符合 SemVer 规范的 tag(比如写成
v1.0、1.0.0-rc而非v1.0.0) - Git 仓库未在 Packagist 上绑定自动更新(即没点 “Update” 按钮或没配 webhook)
- tag 是轻量 tag(lightweight tag),不是附注 tag(annotated tag)——Packagist 更倾向识别
git tag -a v1.0.0 -m "release" - 你改的是
dev-main分支,但composer.json的"minimum-stability"是stable,且没设"prefer-stable": true,导致不稳定分支不被默认拉取
怎么让 Packagist 正确识别新版本?
核心动作只有两个:打规范 tag + 确保 webhook 或手动触发同步。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 用附注方式打 tag:
git tag -a v2.1.3 -m "fix: handle null in parseConfig" - push tag 到远程:
git push origin v2.1.3(注意不是git push --tags,它可能推错历史 tag) - 登录
packagist.org,打开你的包页面,点右上角Update按钮(首次绑定后,后续基本靠 webhook 自动触发) - 检查仓库设置里是否启用了 Packagist webhook(GitHub:Settings → Webhooks;GitLab:Settings → Webhooks)
composer.json 版本字段要不要改?
不需要。Packagist 完全忽略 composer.json 里的 "version" 字段(如果写了,还会报 warning)。它只认 Git tag 名。
- 删掉
"version"字段最干净,避免误导自己或 CI 工具 - 确保
"name"和"type"正确,否则 Packagist 可能无法归类 - 如果你用
dev-前缀分支(如dev-feature/x),需在 require 时显式写明:"your-vendor/your-package": "dev-feature/x as 1.0.0"
最容易被忽略的是 tag 类型和 push 方式 —— 很多人用 git tag v1.2.0 打出轻量 tag,再 git push --tags 推一堆旧 tag,结果 Packagist 没反应,还以为是网络或权限问题。










