创建第一个composer
创建第一个composer
熟悉了composer工具之后,很想自己创建一个属于自己的composer包。以下展开介绍以下过程。
基础命令
# 初始化一个composer项目目录,即在根目录下增加composer.json工具
composer init
# 安装相关依赖
composer install
# 升级相关依赖
composer update
# 清空composer缓存,如果不清楚,则会优先采用缓存内的composer包。
composer clearcache
综上:我在测试过程中,频繁使用到的两个命令,composer clearcache 、composer install。而且是反复删掉vendor目录及composer.lock文件。
创建包
具体代码参见crontab.zip,代码略。主要在与composer.json文件,定义自定义加载之类的。
composer.json文件如下:
{
"name": "chaofml/crontab",
"description": "crontab just like Linux crontab",
"keywords": [
"chaofml",
"crontab"
],
"type": "library",
"autoload": {
"psr-4": {
"chaofml\\crontab\\": "src"
}
}
}
创建项目,引入未发布的包
这部分,遇到的坎坷比较多,这部分才是我写这篇文件的初衷。困难1:首先是如何定义从哪下载包?困难2:如何解决下载过程中遇到的bug?3、包能安装成功,但是无法找找到类,即无法自动加载。
参见文章: https://docs.phpcomposer.com/05-repositories.html
最终的composer.json
{
"name": "some/you",
"description": "dddd",
"repositories": [
{
"type": "package",
"package": {
"name": "chaofml/crontab",
"version": "0.1",
"dist": {
"url": "http://localhost:8005/crontab.zip",
"type": "zip"
},
"autoload":{
"psr-4": {
"chaofml\\crontab\\": "src"
}
}
}
}
],
"config":{
"secure-http":false
},
"require":{
"chaofml/crontab":"*"
}
}
- 针对困难1:
增加repositories
- 针对困难2:
增加config配置,并允许http传输文件。
secure-http此部分。
- 针对困难3:
增加autoload配置,类似于包内定义的加载模式。
- package.version
说明版本号,这个会被当作实际的版本号来引用。
- package。dist
打包说明:可以在代码的根目录打包,zip。这样压缩文件内包含多个文件,也可以在上一级目录。这两种方式都能成功的被识别出来。
- package.source
通常可以被省略,内容如下:
"source": {
"url": "http://smarty-php.googlecode.com/svn/",
"type": "svn",
"reference": "tags/Smarty_3_1_7/distribution/"
},
示例
具体的例子:crontab-example.zip
在开始之间,创建一个servert,提供安装包的下载地址:如:http://localhost:8005/crontab.zip
解压该示例,然后进入根目录,依次执行:
composer install
php start.php
即可看到效果。
git引用未发布的包
最终的composer.json内容如下:比上面的简单多了。
{
"name": "some/you",
"description": "dddd",
"repositories": [
{
"type": "vcs",
"url": "https://gitee.com/chaofml/crontab.git"
}
],
"config":{
"secure-http":false
},
"require":{
"chaofml/crontab":"dev-master"
}
}
备注:由于该包已经发布过了,不太确定,到底是官方的库下载的,还是git仓库。
发布包
在 https://packagist.org/packages/网站上创建一个账号,然后在一个代码仓库上传自己的代码,然后上传即可。整个过程比较简单,略。使用下面命令导入该包。
composer require chaofml/crontab
但是发布后,暂时还没有不能访问。
由于暂时没有版本号,然后会报错:
Could not find a version of package chaofml/crontab matching your minimum-stability (stable). Require it with an explicit version constraint allowing its desired stability.
暂时只能使用下面方式来安装。
composer require chaofml/crontab dev-master
打标签
后来,在自己的仓库里面创建了标签,然后,就成功了。
顺便说一下,composer的延时大概有2分钟左右。