man*_*nix 10 php git composer-php
我有一个应用服务器,它就像一个博客系统(我的wordpress杀手).它基于github托管的php,并使用composer来管理依赖项.每个安装都托管在我的服务器中(我为它们安装).当客户端需要新的"插件/插件"时,我创建了一个新的包并将其托管在私有存储库托管中.当我需要添加新包时会出现问题:
Client 1.
- package for calculate prices
Client 2.
- package for show a welcome message
Client 3.
- package for add a calendar
Run Code Online (Sandbox Code Playgroud)
我的应用程序将准备好在所有实例中使用每个包,因为我通过composer要求它们:
"require": {
"killer/calculate": "dev-master",
"killer/message": "dev-master",
"killer/calendar": "dev-master"
}
Run Code Online (Sandbox Code Playgroud)
现在成像,如果我有2K客户端,他们每个人都在请求自定义包.我如何提供一个应用程序(大规模克隆),但只是在每个安装中保留每个客户端需要的软件包?
我正在搜索(如果可能的话)以下内容.对于每个安装,请手动创建文件,其内容指定所需的包.例如,假设每个客户端的安装都是这样的:
//composer.json
"require": {
}
//plugins.json (this file is ignored via .gitignore)
{
"killer/calculate": "dev-master"
}
Run Code Online (Sandbox Code Playgroud)
然后,以某种方式告诉composer.json要求来自的数据plugins.json.通过这种方式,我避免composer.json为所有客户创建一个巨大的共享不必要的包.
有一个允许扩展另一个文件的功能请求composer.json.你应该去评论它以引起一些注意.
使用该功能的方法是创建一个default.json包含所有常规composer.json内容的文件,包括require列出所需所有常用软件包的部分.
// default.json
{
"require": {
"php": ">=5.4.0"
}
}
Run Code Online (Sandbox Code Playgroud)
然后composer.json为每个项目扩展和/或覆盖一个文件,default.json如下所示:
// composer.json
{
"require": {
"killer/calculate": "dev-master"
},
"extends": "default.json"
}
Run Code Online (Sandbox Code Playgroud)
最终结果将是:
{
"require": {
"php": ">=5.4.0",
"killer/calculate": "dev-master"
}
}
Run Code Online (Sandbox Code Playgroud)
如果你不能等待合并请求,那么你可以从合并请求的作者那里检查出作曲家分叉并试一试.
| 归档时间: |
|
| 查看次数: |
979 次 |
| 最近记录: |