发布composer包到packagist
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"
}
}
}
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
The current page is the「Google AMP」version of this site. To view and comment, please click:Full Version »