能发布到 Packagist 的 Composer 包只需两点:代码仓库公开可访问且 composer.json 合法含必要字段;name 必须为 vendor/package-name 格式,autoload 推荐 PSR-4,type 建议 library,license 不可缺,需打 annotated tag(如 v1.0.0)并推送,最后在 Packagist 提交仓库 HTTPS 地址。

能发布到 Packagist 的 Composer 包,核心就两点:代码仓库可公开访问 + composer.json 文件合法且含必要字段。没别的玄学。
初始化项目并写好 composer.json
在空目录里执行 composer init 交互式生成基础文件,或手动创建。关键字段不能少:
-
name必须是vendor/package-name格式(如myname/hello-world),且和你 GitHub 用户名/组织名一致 -
autoload要配好,否则别人require后根本加载不到你的类。推荐用 PSR-4:{ "autoload": { "psr-4": { "MyName\\HelloWorld\\": "src/" } } } -
type建议设为library,Packagist 会据此归类 - 别漏掉
license(如"MIT"),否则 Packagist 拒绝收录
推送到 GitHub/GitLab 并打上语义化版本标签
Packagist 不拉 master 分支,它只认 Git tag。所以:
- 先
git push origin main(或master)把代码推上去 - 再打一个符合语义化版本的 tag,比如
v1.0.0或1.0.0(前面带v更稳妥):git tag -a v1.0.0 -m "First release"
- 最后推送 tag:
git push origin v1.0.0
- 确保 tag 是 annotated(用
-a参数),轻量 tag(git tag 1.0.0)Packagist 可能不识别
在 Packagist 上提交包 URL
登录 Packagist(用 GitHub 账号即可),点右上角 “Submit” → 粘贴你的仓库 HTTPS 地址(如 https://github.com/myname/hello-world)→ Submit。
- 首次提交后,Packagist 会自动抓取最新 tag 并解析
composer.json - 如果失败,点进包页面看 “Latest update” 下的错误日志,90% 是
composer.json字段缺失或格式错误 - 后续新版本只需推新 tag,Packagist 通常几分钟内自动更新(也可手动点击 “Update”)
- 别用私有仓库链接——Packagist 无法访问,提交必失败
验证安装是否正常
别信页面显示“success”,本地试一遍最实在:
- 新建测试项目:
mkdir test-pkg && cd test-pkg && composer init
- 引入你的包(注意 vendor/package 名必须完全匹配):
composer require myname/hello-world:^1.0
- 写个简单 PHP 脚本调用你的类,确认能
new、能echo、不报Class not found - 如果 autoload 失败,回头检查
src/目录结构和命名空间是否与composer.json中的 PSR-4 配置严格一致
最容易卡住的地方不是流程,而是 name 字段拼错、tag 没推、或者 autoload 路径对不上——这三处多看一眼 composer.json 和 Git 日志,基本就通了。










