-
PHP使用composer来管理工具包,比如我最近需要一个alipay的支付宝,官方只是提供了一个写得有些乱的sdk供参考。只能自己动手了,刚好记录一下发布一个自己的composer包的一般步骤。
标准的composer.json
在自己的包根目录新建一个composer.json,信息大概是这样的:{ "name": "ducksoft/alipay-php-sdk", "description": "official alipay php sdk", "type": "library", "homepage": "http://github.com/hsu1943/alipay-php-sdk", "authors": [ { "name": "hsu1943", "email": "[email protected]" } ], "keywords": [ "alipay", "alipay sdk", "alipay php sdk" ], "license": "MIT", "require": { "php": ">=7.1.0" }, "autoload": { "psr-4": { "duckSoft\\alipay\\": "src" } } }
JSON
如果不想手动创建,也可以使用compser init命令来,根据提示填就可以了。.gitgnore文件
composer包内建议包含一个git忽略文件,内容根据开发和测试需要设置,一般:/vendor/ .idea Bash
composer install 测试
代码开发完,需要测试包,直接在根目录下运行composer install Bash
可以看到自动生成的vender文件夹及相关的加载autoload等文件,可以在example下测试一下包的引入使用等。
下面就剩把规范的包发布到packagist流程了。
GitHub仓库
开发好的软件包上传到GitHub仓库,仓库需要Public权限对外开放访问。packagist 关联 GitHub
去https://packagist.org/使用GitHub账户授权登陆,或者注册账号之后在账户Setting里关联GitHub账户。Submit 发布
登录后在 Submit 栏目下填入 github 仓库地址,check一下,然后就发布成功了。发布composer包到packagist
auto-update
关于更新你发布的包,这个帮助页面(https://packagist.org/about#how-to-update-packages)很好的讲解了多种需求的方案,我们是通过Github 授权登录,所以已经获取了所需权限,所以你自己的GitHub仓库应该已经可以 auto-update自动更新了,在包页面的右下角有绿色提示。
如果这里提示不是auto-update,参考上面帮助页面,可以在Github仓库的Setting => Webhooks下新增 Webhook,填入 packagist 的一些信息和 TOKEN(从 packagist 的 Profile 中 Show API Token获取)即可。
packagist包的auto-update
管理版本 versions
对应 composer 中的版本需求,根据上面提到的帮助页面(https://packagist.org/about)提到的,有这几点:版本将从代码库中的tag标签自动获取
以下都是有效的标签/版本:1.0.0 v1.0.0 1.10.5-RC1 v4.4.4beta2 v2.0.0-alpha v2.0.4-p1 Bash
如果不指定版本(标签),将自动使用dev作为版本,但还是建议参考语义版本管理来发布标签/版本。
GitHub标签/版本管理:# 查看tag git tag # 创建tag git tag 1.0.0 # 带comment信息创建tag git tag -a 1.0.0 -m "comment" # 发布所有tags git push origin --tags # 删除本地 tag git tag -d # 删除远端 tag git push origin :refs/tags/1.0.0 Bash
这样当前的这个commit就被打上了标签,相应的,packagist就有了这个1.0.0版本。
上面提到的支付宝php-sdk发布到了仓库:https://github.com/hsu1943/alipay-php-sdk。
使用:
composer require ducksoft/alipay-php-sdk