要让别人用你的 PHP 包,需先将含合法 composer.json 的公开 GitHub 仓库在 Packagist 注册并关联,再打 v 开头的语义化版本 tag(如 v1.0.0)发布稳定版。

想让别人用你的 PHP 包,光把代码扔 GitHub 上没用,必须让 Composer 能搜到、装得上。核心就两步:代码仓库公开可访问 + 在 Packagist 上注册并关联。中间最容易卡住的是自动更新和版本识别问题。
GitHub 仓库必须公开且含合法 composer.json
Packagist 不爬私有库,也不接受缺失或格式错误的 composer.json。它会读这个文件来确定包名、依赖、自动加载规则。
-
name字段必须是vendor/name格式(如myname/my-awesome-package),且全小写、只含字母数字和短横线 -
autoload必须配置正确,否则用户require后类根本找不到——常用"psr-4": {"MyName\\": "src/"} - 建议加上
type(如library)和description,不然 Packagist 页面显示不全 - 别忘了
git push所有变更,包括composer.json,再操作下一步
在 Packagist.org 提交仓库 URL 并触发同步
登录 Packagist 后,点右上角 “Submit” → 粘贴你的 GitHub(或 GitLab/Bitbucket)仓库 HTTPS 地址,比如 https://github.com/myname/my-awesome-package。
- 第一次提交后,Packagist 会立即抓取
master(或默认分支)的composer.json,生成包页面 - 后续你 push 新 commit 到默认分支,Packagist 默认每 15 分钟轮询一次;但更推荐用 GitHub Webhook 实时触发(提交后在 Packagist 包页点 “Update” 右侧的 “Setup Hook” 按钮,按提示配好)
- 如果提示 “Repository not found”,检查 GitHub 地址是否拼错、是否设为私有、是否已推送到远程
打 Git Tag 才算真正发布可用版本
Composer 安装时默认拉 dev-main(或 dev-master),这不是稳定版。用户要装正式版,你得打符合语义化版本规范的 tag,比如 v1.0.0。
- 本地执行:
git tag -a v1.0.0 -m "First stable release",然后git push origin v1.0.0 - Packagist 收到 tag 后,会自动生成对应版本,并标记为 stable(前提是
composer.json里没设"minimum-stability": "dev") - 用户就能运行
composer require myname/my-awesome-package:^1.0了 - 注意:tag 名必须带
v前缀(如v2.1.3),否则 Packagist 可能识别为 dev 版本
很多人以为提交完就万事大吉,其实最常出问题的是 autoload 配置错导致类找不到,或者忘记 push tag —— 这时候用户 composer require 看似成功,一调用就 Class not found。动手前先用 composer validate 检查 composer.json,再本地建个测试项目 require 自己的包试试加载和调用。










