必须验证邮箱才能发布包,否则提交报403错误;验证后生成api token用于登录;composer.json需含name(vendor/name格式)、description、type、autoload(如psr-4)字段,且github仓库须打规范tag(如v1.0.0)触发自动更新。

packagist.org 注册后必须验证邮箱才能发布包
没验证邮箱的账号无法提交新包,提交时会直接报 403 Forbidden 错误,界面也不提示具体原因。注册完立刻去邮箱点验证链接,否则卡在第一步。
验证完成后,进入 Profile → API Token 页面生成一个 token,后续用 composer login 或命令行推送时需要它。
composer.json 必须包含 name、description、type 和 autoload 字段
缺任意一项都会导致 composer validate 失败,或提交到 Packagist 后显示为“invalid package”。尤其是 name 格式必须是 vendor/name(如 myname/my-awesome-package),且要和 GitHub 仓库名一致——Packagist 会自动抓取对应仓库的最新 tag。
autoload 推荐用 psr-4,例如:
"autoload": {
"psr-4": {
"MyName\MyAwesomePackage\": "src/"
}
}
注意:命名空间末尾的反斜杠不能少,路径 src/ 末尾的斜杠也不能省,否则自动加载失败。
GitHub 仓库需打正式 tag 才能触发 Packagist 自动更新
Packagist 不拉 main 分支,只认 Git tag。本地打好 tag 后必须推送到远程:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
git tag -a v1.0.0 -m "First release"git push origin v1.0.0
如果之前已手动提交过包,首次推送 tag 后还需在 Packagist 页面点击 Update 按钮强制同步一次。之后只要新 tag 推送成功,Packagist 会在几分钟内自动抓取。
别用 git push --tags 推送一堆测试 tag(比如 v0.1.0-alpha),Packagist 会照单全收,污染版本列表。建议用 stable 分支 + 语义化 tag 管理正式发布线。
本地开发时用 path repository 绕过 Packagist 测试安装
发版前想验证别人能不能正常 composer require?别急着推 tag。在测试项目根目录的 composer.json 里临时加一段:
"repositories": [
{
"type": "path",
"url": "../my-awesome-package"
}
],
"require": {
"myname/my-awesome-package": "*"
}
这样 composer install 会软链接本地代码,改完立刻生效,不用反复打 tag、推、等同步。上线前删掉 repositories 块即可。
注意:url 是相对于当前 composer.json 的路径,不是绝对路径;且目标目录下必须有合法的 composer.json,否则报 Could not find package。
真正容易被忽略的是 autoload 的命名空间与文件路径是否严格匹配——哪怕只是大小写差一个字母,在 Windows 开发、Linux 部署时就会加载失败,而 Composer 默认不报错,只静默跳过。










