概述
正常情况我们开源的包直接放到https://packagist.org/,在项目使用时直接composer require引入就可以使用。 但在工作中,往往公司的组件是不能公开的,也就需要搭建私有的composer源。 官方给出的方案是搭建satis
安装
使用composer安装satis
composer create-project composer/satis --keep-vcs
cd satis
配置satis.json
satis的配置文件是项目更目录下的satis.json
文件,该文件需要自己创建
vim satis
{
"name": "satis packages",
"homepage": "http://satis.example.com",
"repositories": [
{ "type": "git", "url": "https://git@gitlab.example.com/hihozhou/exception.git" }
],
"require":{
"hihozhou/exception":"dev-master",
"topthink/framework": "5.1.*"`
}
}
- name
- 项目名称,可随意定义
- homepage
- 你composer镜像的域名,这里一般配合真实情况使用
- repositories
- 需要被索引的git代码仓库地址,一般这里就是配置你的私有仓库地址
- require
- 明确定义包名可以减少索引内容,这里包含定义
外部公共(如topthink/framework)
的和我们自己私有的(如:hihozhou/exception)
require
中定义的私有包的名称
要与repositories
中仓库链接项目中的composer.json中定义的name相同- 依赖的包如果没有release或者tag版本号设为
dev-master
或*
.
- 明确定义包名可以减少索引内容,这里包含定义
- 如果需要在索引所有composer包,在配置中添加
"require-all" : true,
- 如果搭建的是http而非htts需要在配置中加上
"config":{"secure-http":false}
生成索引
php bin/satis build satis.json ./public -v
php bin/satis build
使用php执行脚本bin/satis中的build命令satis.json
指定读取的配置文件./public
输出的目录-v
显示被索引的包
php7.2问题
可能是satis对7.2还没有兼容,如果7.2直接运行生成索引会发生一下报错:
解决办法:
找到satis/vendor/twig/twig/lib/Twig/Extension/Core.php
文件的第1275行,
将原来的
return count($thing);
修改为:
if(is_array($thing)){
return count($thing);
}else{
return mb_strlen((string) $thing, $env->getCharset());
}
然后再次执行
使用php启动服务器
php -S 0.0.0.0:8088 -t public/
访问127.0.0.1:8088可以看到我们定义索引包tp框架
和我的异常包
项目引用
如果你想直接尝试本地,可以直接本地项目配置项目的composer源即可 在composer配置中添加
{
"repositories": [{
"type": "composer",
"url": "http://127.0.0.1:8088"
}]
}
最后项目composer require hihozhou/exception
即可
迭代
- 2018年09月27日 15:45 初稿