乐趣区

关于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 clonegit 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、有第三方依赖的公有库代码,是否有更好的开发方式?

退出移动版