Composer怎么发布自己的包 提交代码到Packagist流程【分享】

10次阅读

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

Composer怎么发布自己的包 提交代码到Packagist流程【分享】

想让别人用你的 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 自己的包试试加载和调用。

text=ZqhQzanResources