使用版本管理创建composer私有库
一、背景
【使用版本管理创建composer私有库】多个项目有相同代码
二、创建
1、初始化一个裸仓 xxxx.git
2、git clone 到本地
3、在根目录下创建src目录,composer的一种格式规范,composer库的代码在该目录下开发
4、初始化composer配置,composer init
生成 composer.json
,交互式【一路回车】生成一些配置和属性,也可以复制别的知名第三方库composer.json
文件进行修改。最终如下,
{
"name": "galaxy/platform",
"description": "xxxxxx库",
"type": "library",
"require": {
"php":">=5.6"
},
"license": "MIT",
"autoload": {
"psr-4": {
"Galaxy\\": "src/"
}
},
"authors": [
{
"name": "xxxxx",
"email": "xxxxxx@qq.com"
}
]
}
其中比较重要的是
require
::库对环境的要求,以及指导不同的库的加载版本autoload
:自动加载配置,这里使用psr-4
规范,定义Galaxy作为跟命令空间,映射src目录5、创建
src/Traits/RpcTrait.php
其命名空间即为 Galaxy\Traits\RpcTrait
6、提交代码,推送版本
三、引入 1、在项目代码的
composer.json
文件引入如下配置"repositories": {
"galaxy/platform": {
"type": "git",
"url": "xxxx.git"
}
},
文章图片
其中
galaxy/platform
是我们自定义的包名,也是最后安装完的目录结构,vendor/galaxy/platform
执行
composer update
即可,本质是调用git clone
或git pull
配置的私有库仓库地址,获取代码覆盖vendor/galaxy/platform
,所以这里是需要有克隆和拉取私有库代码的权限,如果仓库是ssh协议,则需要先密钥授权
仓库是https或http协议,则需要登录凭证,也就是仓库托管平台的账号密码;如果是http还额外需要在composer.json增加配置【在config中增加
"secure-http": false
】注意:默认拉取是master分支的最新版本,这里可以指定分支以及版本。经过以上操作后,
composer.json
会默认生成require
配置【"galaxy/platform": "dev-master"
】,其中key是包名,值是固定格式dev-
{{分支}}#{{版本hash或标签}},如果我们指定了某个版本。就会拉取指定版本的私有库代码,如图文章图片
四、使用 像正常的库使用,如图
文章图片
文章图片
五、开发与迭代 1、没有第三方依赖的代码,可以直接编码,在私有库项目中进行开发测试,这里可以在src目下建Tests目录,写测试用例,或者创建Demo目录,写调用示例;
2、有第三方依赖的代码,目前我不知道如何直接在私有库项目中进行开发,不过我想到一种方法,先在业务项目代码中对私有库进行开发,开发测试通过后,将代码覆盖私有库自己的仓库代码进行提交推送,然后在业务项目代码,执行
composer update
六、疑问 1、有第三方依赖的私有库代码,是否有更好的开发方式?
推荐阅读
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 2020-04-07vue中Axios的封装和API接口的管理
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程
- 使用composer自动加载类文件