/ composer

PHP 发布自己的composer包

Packagist上发布自己的包最科学的方式应该就是通过github了,本文将结合实战图文讲述具体的操作流程。

  1. 在你的github上新建一个仓库,这里我们创建一个名为my-package的仓库。

  2. 将远程仓库克隆到本地,然后我们需要在本地仓库添加一些文件。最重要的一个文件是composer.json,我们可以直接新建这个文件并编写,当然我们还可以使用composer init命令按步骤自动生成。

解释下几个步骤:

  • Package name,也就是包名包含2部分,<供应商名称>/<包的名称>,一般来说供应商名可以填写你的github用户名。
  • Require,可以看到在图中我们并没有设置require字段,我建议如果你知道你的代码依赖自己在composer.json生成后手动添加,因为在composer init中操作会去搜索你需要的包,比较耗时。

最终我们生成的composer.json文件应该是这个样子的。

{
    "name": "sidfate/my-package",
    "description": "This is a test",
    "license": "MIT",
    "authors": [
        {
            "name": "Sidfate",
            "email": "sidfate@163.com"
        }
    ],
    "require": {
        "php": ">=5.3.0"
    }
}

接着你还可以在本地仓库中添加一个LICENSE以及README.md,当然还有你的包代码。那么现在我们的本地仓库应该是下面图中的样子,然后我们提交文件到远程仓库。

3.接下来我们就要前往Packagist。首先登陆,我们可以直接使用github账号登陆。然后点submit,通过github提交包。

点check它会检验包的合法性,如果出现错误,根据它的提示做出修改即可。如果你按照上述步骤坐下来,check应该不会有问题,结果应该跟下图一样。

点击submit我们的包就提交成功了。

在上图中我们可以看到2个问题:

Fisrt Issue

有一个提示说This package is not auto-update,这个说的是一个自动更新的功能没有开启,就是当你github上的代码修改后,Packagist上对应的包的代码不会更新修该。下面我们还说下设置自动更新的方法,官方的详细文档在这里

  1. 点开github上my-package仓库的Setting选项,选择Integrations & services,搜索“Packagist”。

2.然后你需要填写User和Token。注意User字段应该填写你之前设定的服务商的名称。在这里例子中我们填写sidfate,而不是Sidfate,前者是供应商名称,后者是我github的用户名,它是大小写敏感的,所以这里一定要注意。Token字段你可以在Packagist上的个人信息中找到。

设置好之后自动更新的功能就完成了。

Second Issue

其实到现在我们已经可以用composer安装自己的包了,但是你得加上dev-master,因为你的包还是开发版本的。

composer require sidfate/my-package:dev-master

可以通过在github上创建版本来发布正式版本。点击my-package仓库中的releases,创建一个版本。

创建完成后就可以看到在Packagist中多了一个正式版本。

总结

至此我们自己的composer包就发布完成了,如果你在途中遇到什么问题可以在该文下评论留言:)。