美文网首页
使用GitHub、Composer、Packagist发布管理自

使用GitHub、Composer、Packagist发布管理自

作者: 素年锦时2021 | 来源:发表于2018-05-06 01:45 被阅读0次
    3654.jpg

    发布流程

    首先准备好了GitHub帐号、Composer程序、Packagist帐号,接下来是如何通过它们发布我们的Composer包。

    1. 创建GitHub仓库:
      默认仓库是空的,没有任何代码和分支(git空仓库的特性),用git克隆到本地。
    2. 初始化 composer.json:

    $ cd ~/work/github/
    $ git clone git@github.com:yoho2021/hello-world.git

    使用composer自带的初始化命令(composer init),创建一个composer.json描述文件。如果想手动编辑,可以去composer官网阅读相关文档获得帮助。


    再来添加一个readme,要不然打开github仓库主页的时候,总会提示让你创建一个readme,有readme其实对其他小伙伴能快速了解这个包的功能有很大作用。

    3.推送代码:
    到此为止我们已经完成了仓库的初始化:初始化composer描述文件,编写readme文档,接下来需要把代码推送到GitHub。

    $ git add ./
    $ git commit -m 'init hello world package'
    $ git push origin master
    最后一步需要加origin master参数的原因是空仓库是没有分支的,所以我们需要强制推送本地的master到远端的master,在这之后可以直接用git push命令推送而不需要加后面的参数了。

    1. 发布到packagist.org:
      访问Packagist主页,确认自己已经登录,然后点击右上角大大的submit,然后填入我们创建的仓库的地址(如:https://github.com/yoho2021/hello-world.git),点击Check,然后没问题,再点击Submit。

    5.配置GitHub和Packagist之间的自动更新钩子:

    • 根据向导,复制自己的packagist的api token,然后去GitHub配置好仓库的钩子服务,然后点击服务名称后面的笔图标,进去之后点Test service。如果services列表里的packagist前面是绿色的对钩,说明成功了。

    • 接着我们再去packagist的hello-world包详情页面刷新,红红的警告没有啦!(如果这里还有,那么说明在GitHub创建的service填写的资料有错误,第一个是username,不是email地址,第二个是packagist api token,一定不要搞错,第三个不需要填)。

    6.测试安装hello-world包:

    $ composer require yoho2021/hello-world dev-master
    注意:此处需要带上dev-master

    7.添加示例代码:
    首先我们编辑hello-world包仓库代码里的composer.json,加入autoload配置。

    {
    "name": "yoho2021/hello-world",
    "description": "this is a hello world repo for composer.",
    "license": "MIT",
    "authors": [
    {
    "name": "zhouyang",
    "email": "zhouyang2021@gmail.com"
    }
    ],
    "autoload": {
    "psr-4": { "Yoho\Demo\": "src" }
    },
    "require": {}
    }

    这里我们添加了autoload属性,并且是什么psr-4,这里我需要说一下,PSR-X是php-fig发布的一系列规范中的一个自动加载规范,如果想要深入了解它的其他规则,请阅读PHP-FIG。添加的配置代表我们定义了一个命名空间的起始目录,比如src目录里有一个Hello类文件(类名必须和文件名一致),那么要想通过autoload访问它,必须把命名空间写成namespace Yoho\Demo;

    $ cd ~/work/github/hello-world/
    $ mkdir src
    $ cd src/
    $ touch Hello.php

    <?php
    namespace Yoho\Demo;
    class Hello
    {
    private $name;
    public function __construct( $name = 'World' )
    {
    $this->name = $name;
    }
    public function getName()
    {
    return $this->name;
    }
    public function hello()
    {

        return 'Hello '.$this->name.'!';
    }
    

    }

    在提交代码之前,我们需要自己先测试一遍我们的代码是否有问题。

    $ composer install

    然后创建一个测试php文件,引入autoload,并且实例化一个我们的Hello类。

    $ touch test.php

    <?php
    require_once "vendor/autoload.php";
    $hello = new Yoho\Demo\Hello();
    echo $hello->hello();
    echo "\n";
    $obj = new Yoho\Demo\Hello('Hello world');
    echo $obj->hello();

    推送这些新代码到GitHub,因为我们配置了钩子服务,所以在推送之后不久,GitHub会通知Packagist仓库有更新,然后小伙伴们就轻松的拿到你的更新的代码啦!

    包版本管理

    至此我们已经可以把自己的代码发布到线上了,但是有一个问题,别人的包都有版本号,而我们的安装需要手动指定dev-master要不然composer会说找不到stable版本,这里我们就需要引入版本和分支概念了,composer包的版本是来自于git的分支和tag,分支代表dev版本(除master外),tag代表stable版本,因为正常来说,大家都是这样管理项目的版本的,所以直接无痛模式切换,自由方便。下面我们就来模拟一下如何发布轻量级的版本(相对使用私钥签署tag并发布的过程)。

    $ git branch

    我们会看到绿色的master前面有个星号,说明当前工作分支是master,那么对应的composer包的版本就是dev-master,是不是有些熟悉了。接下来我们创建一个0.1分支,作为我们0.1版本的迭代分支,并基于它提交一些代码,然后推送。

    $ git checkout -b 0.1

    比如我们编辑readme,添加使用示例(虽然我们在0.1分支开发和提交,但是我们一定要在特性或者bug修复的工作完成之后,合并回master)。

    $ git add .
    $ git commit -m 'update readme, add Hello class demo'
    $ git push origin 0.1

    因为我们创建的0.1分支在远端是不存在的,所以要指定推送到远端的0.1,GitHub会自动创建一个0.1分支,和master是一样的。这个时候我们再看看我们的hello-world包的版本,使用composer show yoho2021/hello-world命令查看。

    但是只有dev是不够的,很多线上的版本依赖的都是stable,肯定不会让一个dev包上去的,这个时候,我们觉得可以发布一个稳定版本了,那么在0.1分支上,我们发布一个0.1.0版本。

    $ git tag 0.1.0
    $ git push --tags

    推送成功之后,用composer命令查看一下版本信息,是不是有了一个0.1.0的stable版本了呢!到此为止,基本的发布流程就讲完啦!

    相关文章

      网友评论

          本文标题:使用GitHub、Composer、Packagist发布管理自

          本文链接:https://www.haomeiwen.com/subject/nwdyrftx.html