前言
日常的开发中我们经常用到composer去安装其他人封装好的扩展包,如果你有好的功能代码想分享给其他人使用,就可以使用composer打包成扩展包。其他人用composer安装后就可以使用你的扩展包了。这篇文章教你如何打包自己的composer扩展包。
1.新建仓库
.在github
、gitlab
、gitee
等平台新建一个代码仓库,我这里以github
为例新建一个测试仓库(访问不了github的建议下载一个瓦特工具箱(Steam++官网) - Watt Toolkit (steampp.net),可以免费加速github)
登录github
后,在左上角点击新建仓库
填写仓库名称、描述、勾选添加README文件、选择一个你喜欢的开源协议(我这里选择Apache License 2.0)然后点击创建即可
创建完成后我们把它clone下来
git clone https://github.com/jian1098/test_repository.git
2.初始化composer配置
-
首先安装好composer,这个步骤我就不多说了,按照百度的安装即可。
-
然后进入上一步clone下来的仓库目录,然后在该目录下打开cmd(按住Shift,然后右键->在此处打开posershell窗口),执行下面的命令
composer init
-
安装命令行提示输入你的扩展包名称,直接按
github用户名/仓库名称
这种格式填即可 -
接着输入扩展包描述、作者信息、最低稳定版本的标签(必须是stable, RC, beta, alpha, dev其中一个,一般填dev即可)、扩展包类型、开源协议(上一步创建github仓库我选的Apache License,所以我这里填 Apache-2.0)
-
后面会让你定义依赖版本,可以直接按两次回车跳过,我这里搜索php,然后要求php版本要>5.4
-
接下来配置自动加载,按照提示输入
src/
即可,如果不想要默认的命名空间你可以修改这里 -
最后就是要你确认信息,是否创建
.gitignore
文件,是否安装依赖,完了composer初始化到这里就完成了,你会得到src目录
、.gitignore
、composer.json
这些文件
3.提交到composer仓库
-
首先在上一步的目录中将所有文件提交到
github
-
登录Packagist,使用github账号登录即可(用其他账号可能需要手动配置自动更新)。点击右上角的
Submit
,然后填写你第一步创建的github仓库地址
然后提交就创建好composer仓库了
4.编写和测试扩展
接下来要写你的扩展的具体代码了,不过我们首先要安装刚刚创建好的扩展包。在上一张图片中,复制圈出来的安装命令和标签名组成完整的安装命令,然后在项目(ThinkPHP 或 Laravel等项目下)中安装
composer require jian1098/test_repository:dev-master
安装完后可以在vendor
目录看到你的扩展包,不过还没有任何的php代码,我这里安装在ThinkPHP项目下
因为src目录是空的,所以提交不了上github,我们手动在扩展目录(图中的vendor/jian1098/test_repository
)下新建src
目录,用来存放扩展包代码。
接着就可以开始写代码了,注意注意:在扩展包中所有的php文件必须加上你的命名空间!!!而且这里的命名空间必须跟composer.json
中配置的autoload psr-4
中的保持一致,不然会报错找不到类!!
我这里在src下新建一个Hello.php
文件,内容如下:
<?php
namespace Jian1098\TestRepository; # 命名空间
class Hello{
public function say(){
echo "hello";
}
}
然后我在项目的控制器中引入并调用我写的Hello
类进行扩展包的测试和调试
<?php
namespace app\index\controller;
use Jian1098\TestRepository\Hello; # 引入扩展包
use think\Controller;
class Index extends Controller
{
public function index()
{
$hello = new Hello();
$hello->say(); //访问index方法会输出hello
}
}
到这里,扩展包的编写和测试、调试就算完成了
5.发布扩展包
-
1.更新github仓库
再回到我们第1步创建clone下来的扩展包仓库中,将上一步编写好的src目录下所有文件复制到仓库的src目录下,然后提交到github上 -
2.添加扩展包版本标签
composer默认的dev-master标签不建议给别人使用,用来开发调试即可,我们开发调试好了以后新建一个标签提供给他人使用
在扩展包仓库的目录下分别执行
# 新建1.0.1版本标签 git tag -a 1.0.1 -m "1.0.1版本" # 标签推送到github git push origin 1.0.1
-
回到Packagist网站,可以看到刚刚发布的1.0.1版本了
6.使用扩展包
在其他项目下安装你发布的扩展包,指定版本标签即可
# 默认安装最新创建的标签版本
composer require jian1098/test_repository
# 安装指定标签版本
composer require jian1098/test_repository:1.0.1
要卸载扩展包,可以执行composer remove
命令
composer remove jian1098/test_repository