Wake AU

发布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 »