Composer对与分发自己的PHP软件包,方便别人引用来说是很好的一种方式。平时开发中经常会用到Composer来引入三方的优质软件包,例如 Laravel、easywechat等等,如果我们有一些好的想法如果分发出去呢?下面我们就一步步来告诉大家如何实现自己的第一个Composer包。
初始化项目
首先创建composer.json文件用于声明包基本信息。
{
"name":
"jake/dev-package",
# 包名,格式为 vendor/package-name vendor用于避免冲突
"description":
"软件包描述",
"autoload": {
# 自动载入规范
"psr-4": {
"Jake\Package\": "src"
}
}
}
配置好之后就可以在src目录编写项目逻辑,这里我们声明了自动载入符合psr-4规范。
本地引用软件包
在为上传到仓库之前,我们可以使用本地路径来引入
{
"name": "jake/application",
...
"repositories": {
"dev-package": {
"type": "path",
"url": "relative/or/absolute/path/to/my/dev-package",
"options": {
"symlink": true
}
}
}
}
配置中的“type”: “path” 表示引入的是一个本地仓库,url定义了包的路径,路径可以使用相对路径或绝对路径。
虽然设置了type和url后就可以开发了,但是composer会复制包的代码到vendor目录,而且每次包发生变更都要执行composer update
为了避免更新执行update操作,可以通过设置”symlink”: true参数让composer创建一个软链接到包所在目录
最后一步操作就是使用composer require命令来引入软件包。
composer require jake/dev-package @dev
发布到公网
1、 发布到外网首先需要把代码提交到vcs服务器,并且设置为可公开访问。
2、 然后注册 packagist 帐号用于发布,用邮箱即可注册。
3、 登录packagist后可通过 submit 页面发布composer包,发布时需要填写可公开访问的vcs地址。如下图
点击Check跟着向导走即可完成发布。
提示
包名中的vendor不可与他人发布的重复。
使用
composer require
"kyfjake/lumen-swoole:version"
版本号规则
- dev-branch-name表示使用某一个分支版本,对应vcs中的分支
- vxx.xx.xx 表示使用xx.xx.xx版本,对应git中的标签 vxx.xx.xx
版本号匹配规则见: 官方文档 或 composer包版本命名及限定规则