制作并发布属于你的 Composer 包

Composer 是 PHP 用来管理依赖关系的重要工具。一个合格的程序员肯定得学会使用别人提供的包,但也应掌握制作和分享自己的软件包的方法,下文将详细讲述如何创建一个自己的 Composer 包。

一、创建Git仓库,用于存放包

composer包是需要仓库的,而仓库最常用的当然就是git,不过碍于笔者的网络(无翻qiang)环境,将采用码云来作为包的仓库。

1. 创建Git仓库

首先第一步,你肯定要有一个git/码云账号,不然怎么创建属于你的仓库呢。这里笔者也不讲述怎么注册账号了,相信天才如你,没问题的(其实是笔者记不得了)。

在拥有自己的码云账号后,创建一个用于存放包的仓库,配置可参考下图:

在这里插入图片描述

点击“创建”便可以了。看到下图创建成功的仓库了吗?快快复制git地址,进行下一步操作吧!

在这里插入图片描述


2. 拉取仓库到本地上

在自己电脑本地创建一个目录formatJoinData,移动到新建目录的上级目录中,克隆刚生成的git仓库,命令如下:

git clone https://gitee.com/millionmile/format_join_data.git formatJoinData

在这里插入图片描述


二、创建自己的包,同步到Git仓库上

仓库已经建好了,下一步便是去创建自己的包了。

1. 按照下图示例,进行composer包的初始化

在这里插入图片描述
在这里插入图片描述

进行如上操作后,我们的composer包已经初步创建好了,接着下一步。


2. 新建src目录,在其中根据自己需求添加代码,如下图的FormatJoinData.php文件

在这里插入图片描述

3. 在composer.json添加如下图所示代码,用于自动化加载包内所用到的自定义类文件

在这里插入图片描述

4. 更新composer.json后,使用一下代码添加自动加载功能

composer update

5. 更改.gitignore文件,内容如下

/vendor/
.buildpath
.project
/.settings/
.idea
.php_cs.cache
.DS_Store
composer.lock
/*.php

6. 在项目根目录中创建test.php文件,内容如下

<?php

require_once __DIR__ . '/vendor/autoload.php';

use MillionMile\FormatJoinData\FormatJoinData;

FormatJoinData::hi();

运行该php文件,如果正常输出,那么最基础的composer包配置成功


7. 上传代码到git仓库上

git add .
git commit -m "init"
git tag v1.0.0
git push origin master
git push origin --tags

三、在packagist上发布自己的包

1. 在https://packagist.org/packages/submit网站中,登录好自己的账号,然后进行如下操作:

在这里插入图片描述

2. 如何使用自己的packagist包?

在自己项目中使用下面示例composer命令

composer require millionmile/format_join_data ~1.0

或在composer.json文件中编辑后更新,均可。


四、设置 Packagist 中的包自动更新

如果包没有设置自动更新的话,那么在提交代码和新的版本标签后,便需要手动进入到packagist网站中,并进入对应的包界面中点击Update按钮,操作未免较为繁琐。

杯具的是,码云暂不支持Packagist:WebHook配置页面中,根本就不存在自定义POST方式和自定义请求POST内容。

这里,笔者使用略微麻烦点的方法来解决,有兴趣的小伙伴可以学习下(当然,你要是能爬qiang或网络杠杠的,使用git作为仓库的小伙伴可以参考这篇文章发布composer包到packagist上并设置自动更新,就没必要用这种傻方法了)

下面说下笔者的自定义处理方法:

1. 获取自己在packagist中的API TOKEN

在packagist网站中,进入到个人信息管理页面,即可看到下图,获取API TOKEN

在这里插入图片描述

2. 获取包的PACKAGIST_PACKAGE_URL

每个包的PACKAGIST_PACKAGE_URL都是不同的,必须进入到包管理界面中,才能获取到
在这里插入图片描述

3. 在项目根目录中创建auto_upload.php文件,内容如下:

<?php

$tag = 'v1.0.3';
$msg = '进行了一些细微调整';

echo `git add .`;               //添加所有更改
echo `git commit -m "$msg"`;    //提交更改
echo `git tag $tag`;            //创建新版本标签
echo `git push origin master`;  //提交新版本到git上
echo `git push origin --tags`;  //提交新版本标签到git上
//同步更新packagist上的包信息
//记得修改自己的 API_TOKEN 和 PACKAGIST_PACKAGE_URL 哦
echo `curl -XPOST -H "content-type:application/json" "https://packagist.org/api/update-package?username=MillionMile&apiToken=API_TOKEN" -d "{\"repository\":{\"url\":\"PACKAGIST_PACKAGE_URL\"}}"`;

当需要发布新版本到packagist上时,更改文件中的标签版本号,运行php auto_upload.php即可


!!注意:win中,curl操作只能够使用双引号,不能够使用单引号来包裹内容,切记切记!如果win中没有安装过curl的话,可以参考这篇博文《windows下使用curl命令&&常用curl命令》进行安装。

虽然已经提交包更新了,但是composer使用国内镜像的话,还需要等待最新的资源信息同步完成,大概等个5-10分钟即可。在此期间,composer update无效的话也别amazing嗷


参考资料

windows下使用curl命令&&常用curl命令

手把手教你发布自己的 Composer 包

猜你喜欢

转载自blog.csdn.net/weixin_38125045/article/details/108467761