php项目包发布,提交PHP组件到Packagist 发布自己的Composer包

下面我们来看一篇关于 提交PHP组件到Packagist 发布自己的Composer包的教程,希望这篇文章能够帮助到各位朋友哦。

Composer是PHP的一个依赖管理工具,它使得PHP焕发新的生机,有了现代化的WEB开发规范,Packagist是PHP组件的库,也有其他的镜像。

在Packagist上提交了一个自己开发的PHP组件,这样其他开发者就可以使用Composer使用这个包了。这个组件并没什么功能,主要是看看提交PHP组件的流程,并记录了过程中遇到的问题及解决方法,以供参考。

提交PHP组件步骤:

1.新建一个项目目录,创建一个composer.json文件,格式如下:

PHP

{

"name": "your-vendor-name/package-name",

"description": "A short description of what your package does",

"require": {

"php": "^5.3.3 || ^7.0",

"another-vendor/package": "1.*"

}

}

这个json格式的文件中包含组件的基本信息,这里还差自动加载的方式,要根据具体开发模式指定自动加载方式,这里require可以指定这个组件依赖的其他组件,composer都会自动解决依赖。

附上完整的composer.json内容作为示例:

JavaScript

{

"name": "tanteng/laravel-page-loaded-time",

"description": "Display page loaded time",

"keywords": ["laravel","performance"],

"homepage": "https://github.com/tanteng/laravel-page-loaded-time",

"license": "MIT",

"authors": [

{

"name": "tanteng",

"email": "tanteng@qq.com",

"homepage": "http://www.tanteng.me",

"role": "Developer"

}

],

"require": {

"php": "^5.3.3 || ^7.0",

"laravel/framework": "~4.0"

},

"autoload": {

"psr-4": { "Loading\\": "" }

}

}

2.开发组件功能

要注意遵循psr规范,使用命名空间。

3.把组件提交到Github上

提交组件到Packagist之前需要先把代码提交到github上,在Packagist只需填写组件的github地址。

4.提交组件地址到Packagist

这样就完成的PHP组件提交到Packagist的过程,具体请参见Packagist官网。

问题:使用composer require找不到组件

组件提交到Packagist上,提示发布成功了,但是使用composer命令却找不到组件:

PHP

composer require tanteng/laravel-page-loaded-time

如图:

1474563558_9695.png

由于我的composer使用的国内镜像,猜测可能是没有同步的原因,使用这个命令把“源”改回去还是不行。

PHP

composer config -g repo.packagist composer https://packagist.org

原来我的组件还没有在github上发布正式,这个时候还是开发版本dev-master.应该加上dev-master版本。

PHP

composer require tanteng/laravel-page-loaded-time:dev-master

果然指定了dev-master版本可以成功更新组件,但是这样不行,我们要有一个正式版本。

1474563558_1830.png

github发布版本

进入组件的github主页,找到导航上“releases”,点击进去如图页面,就可以创建一个版本,填写好信息之后即可发布版本。

1474563558_5406.png

按照页面上的提示填写内容,完成后发布。发布版本后,通过composer require发现还是找不到包。

设置自动更新版本

1474563558_2465.png

原来还要在Github上配置一下自动更新。具体步骤参考:https://packagist.org/about#how-to-update-packages

我直接通过手动的方式发送curl请求来设置,这样还简单一点,不过这样每次发新的版本都需要这样请求一下:

PHP

curl -XPOST -H'content-type:application/json' 'https://packagist.org/api/update-package?username=tanteng&apiToken=secret' -d'{"repository":{"url":"https://github.com/tanteng/laravel-page-loaded-time"}}'

返回{“status”:”success”}表示成功。

再打开https://packagist.org/packages/tanteng/laravel-page-loaded-time,发现已经是正式版本了。

我用的是composer国内镜像,因为众所周知的原因,连代码仓库也要被墙,我服!等了几个小时再试,这个时候镜像同步更新了,再次输入:composer require tanteng/laravel-page-loaded-time,这个时候可以成功更新了。如图,vendor文件夹下也自动装载了依赖的其他组件

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值