很多时候,多人开发一个项目的时候,我们需要统一管理依赖和一些类库文件,不然每个人引入自己的类源码,造成累赘,和使用方法不一混乱的局面。所以现在很多流行框架都用composer来管理。
大部分都是github上创建自己的依赖包,然后Packagist来发布,最后composer下载到自己的项目。但是有时候我们需要用的类库是涉及隐私的,不方便公开,怎么办。这个时候需要我们自己配配置composer下载源
下面的例子:是以本地搭建的gitlab为仓库(内部才能访问).
一、环境信息
目前gitlab网址为 http://git.weshineapp.com
假设要安装的包名为 weshine/weshineLib
注:包名带斜杠/ 这是composer包规定格式
二、修改 composer 全局 config
文件路径 /root/.composer/config.json (路径大部分为这个)
因为 git.weshineapp.com 使用 HTTP 协议, 所以secure-http 要设为false
设置gitlab-domains 告诉 Composer 相应的域名可以使用 GitLab API
内容如下:
{
"config": {
"secure-http": false,
"gitlab-domains": [
"git.weshineapp.com"
]
}
}
三、在gitlab上创建一个项目
编写composer.json文件,然后提交到仓库上。此时因为有了composer.json文件,该项目相当于一个包文件
注:composer.json中具体的文件对应加载类型,需要根据文件的作用,自行判断,加载类型含义可参考网址:http://laravelacademy.org/post/7074.html (推荐psr-4加载类型)
个人理解:
psr-0 :已经被废弃,原因目录结构太深,不适用
files :一般对应公共函数的文件
class-map :顾名思义,只是做了一个映射而已,这种最普通的自动加载,如果项目够大,文件很多,容易产生类名冲突
psr-4:会自动给相应文件夹下的类文件,自动添加一个和文件夹同名的命名空间前缀,然后进行相应加载。可以有效避免类名冲突的问题。
加载原理:可追溯vendor文件夹下的autoload文件。
例如:以下是我的conposer.json配置
四、在其他项目中使用第三步创建好的包,实现自动加载
在项目的根目录中,使用composer init命令 然后一直回车,默认创建一个composer.json的文件,然后进行编写,大致内容如下:
最后: 编写完成composer.json 文件之后,可以使用 composer update 命令进行安装,或者更新。