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": "osnail1943@gmail.com"
}
],
"keywords": [
"alipay",
"alipay sdk",
"alipay php sdk"
],
"license": "MIT",
"require": {
"php": ">=7.1.0"
},
"autoload": {
"psr-4": {
"duckSoft\alipay\": "src"
}
}
}
如果不想手动创建,也可以使用 compser init
命令来,根据提示填就可以了。
.gitgnore文件
composer
包内建议包含一个git忽略文件,内容根据开发和测试需要设置,一般:
/vendor/
.idea
composer install 测试
代码开发完,需要测试包,直接在根目录下运行
composer install
可以看到自动生成的 vender
文件夹及相关的加载 autoload
等文件,可以在 example
下测试一下包的引入使用等。
下面就剩把规范的包发布到 packagist
流程了。
GitHub仓库
开发好的软件包上传到 GitHub
仓库,仓库需要 Public
权限对外开放访问。
packagist 关联 GitHub
去https://packagist.org/使用GitHub账户授权登陆,或者注册账号之后在账户 Setting
里关联GitHub账户。
Submit 发布
登录后在 Submit
栏目下填入 github 仓库地址,check一下,然后就发布成功了。
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
获取)即可。
管理版本 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
- 如果不指定版本(标签),将自动使用
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
这样当前的这个 commit
就被打上了标签,相应的, packagist
就有了这个1.0.0版本。
上面提到的支付宝 php-sdk
发布到了仓库:https://github.com/hsu1943/alipay-php-sdk。
使用:
composer require ducksoft/alipay-php-sdk
标题:发布composer包到packagist及其auto-update和版本管理
原文链接:https://beltxman.com/3402.html
若无特殊说明本站内容为 行星带 原创,未经同意请勿转载。