Packagist 不托管代码,仅索引公开 Git 仓库;中文用户提交失败主因是 name 字段含中文/空格/大小写混用,或未配置 GitHub Webhook——任一不满足即导致 composer require 找不到包。

Packagist 不托管代码,只索引公开 Git 仓库;中文用户提交失败,绝大多数是因为 name 字段含中文、空格或大小写混用,或者没配 GitHub Webhook —— 这两点踩中任意一个,composer require 就永远找不到你的包。
composer.json 的 name 字段必须全小写且不含中文
Packagist 对 name 字段校验极严:它必须是 vendor/package-name 格式,全部小写,仅允许字母、数字和短横线(-),不能有下划线、空格、中文、大写字母或点号。
-
"name": "myorg/http-client"✅ 合法 -
"name": "myorg/我的工具"❌ 中文直接拒收 -
"name": "MyOrg/HttpClient"❌ 大写被拒 -
"name": "myorg_my-utils"❌ 下划线不认 -
"name": "myorg/my utils"❌ 空格报错
注意:vendor 部分必须与你在 packagist.org 注册的用户名完全一致(不是 GitHub 用户名,除非你已手动绑定);本地验证可用 composer validate --strict,但它不检查中文,真正拦截在 Packagist 抓取时。
打 tag 前必须删掉 composer.json 中的 version 字段
Packagist 完全忽略 version 字段,只从 Git tag 解析版本。留着它不仅无用,还会导致后续 tag 同步失败或版本混乱。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 确保
composer.json里没有"version": "1.0.0"这类字段 - 打 tag 必须用标准语义化格式:
v1.0.0、v2.1.3-beta.1✅;1.0、V1.0.0、release-v1.0.0❌ - 推送命令要明确指定 tag:
git tag v1.0.0 -m "first release"→git push origin v1.0.0;别用git push --tags,容易误推测试 tag - 确认 tag 已上远程:
git ls-remote --tags origin | grep v1.0.0
GitHub Webhook 是自动更新的唯一可靠方式
2023 年底起 Packagist 彻底关闭自动发现,没配 Webhook 就等于每次发版都要手动点 “Update”,极易遗漏。中文用户常卡在这一步,因为 Payload URL 填错或事件类型选错。
- Payload URL 必须是
https://packagist.org/api/github(不是带?username=的旧地址) - Content type 选
application/json - Events 勾选
Releases(最稳)或Just the push event;别选Everything,易触发失败 - 配完去 GitHub webhook 的
Recent Deliveries查状态码,200才算通 - 测试:
git tag v1.0.1 && git push origin v1.0.1,几秒内 Packagist 包页应刷新
autoload 映射错位会导致安装成功但 Class not found
用户 composer require 成功不代表能用——90% 的 “类找不到” 问题出在 autoload 配置与实际文件结构不匹配。
- PSR-4 映射必须严格对应:
"psr-4": {"MyOrg\MyPackage\": "src/"}中,命名空间末尾的\和路径末尾的/缺一不可 -
src/Helper.php必须声明namespace MyOrg\MyPackage;,大小写、层级、反斜杠都不能错 - 本地验证前务必运行
composer dump-autoload --no-dev,否则缓存仍是旧的 - 别把
phpunit/phpunit放进require,应移入require-dev
最容易被忽略的是:Packagist 不运行任何代码、不执行测试、不检查 src/ 是否为空——只要 composer.json 过了校验,包就能上线,但用户 require 后立刻报 Class not found。

















