gpt4 book ai didi

php - 动态包含在 composer.json 中的克隆项目

转载 作者:IT王子 更新时间:2023-10-29 01:01:25 24 4
gpt4 key购买 nike

我有一个应用服务器,它就像一个博客系统(我的 wordpress killer )。它基于托管在 github 中的 php,并使用 composer 来管理依赖项。每个安装都托管在我的服务器中(我为他们安装)。当客户需要新的“插件/插件”时,我会创建一个新包并将其托管在私有(private)存储库托管中。当我需要添加新包时,问题就来了:

Client 1.
- package for calculate prices

Client 2.
- package for show a welcome message

Client 3.
- package for add a calendar

我的应用程序将准备好在所有实例中使用的每个包,因为我通过 Composer 需要它们:

"require": {
"killer/calculate": "dev-master",
"killer/message": "dev-master",
"killer/calendar": "dev-master"
}

现在想象一下,如果我有 2000 个客户并且他们中的每个人都在请求自定义包。我怎样才能提供一个应用程序(大量克隆),而只是在每个安装中只保留每个客户需要的包?

假设的解决方案

我正在搜索(如果可能的话)类似下面的内容。对于每个安装,手动创建一个文件,其内容指定所需的包。例如,假设每个客户端的安装都是这样的:

//composer.json
"require": {
}

//plugins.json (this file is ignored via .gitignore)
{
"killer/calculate": "dev-master"
}

然后,以某种方式告诉 composer.json 需要来自 plugins.json 的数据。通过这种方式,我避免创建一个巨大的 composer.json 为所有客户端共享不必要的包。

最佳答案

有一个feature request允许 composer.json 扩展另一个文件。你应该去评论它以引起一些注意。

使用该功能的方法是创建一个 default.json 文件,其中包含所有常规 composer.json 内容,包括 require 部分列出了您需要的所有常用包。

// default.json
{
"require": {
"php": ">=5.4.0"
}
}

然后为每个扩展和/或覆盖 default.json 的项目创建一个 composer.json 文件,如下所示:

// composer.json
{
"require": {
"killer/calculate": "dev-master"
},
"extends": "default.json"
}

最终结果为:

{
"require": {
"php": ">=5.4.0",
"killer/calculate": "dev-master"
}
}

如果您不能等待 merge 请求,那么您可以去查看 composer fork来自 merge 请求的作者并尝试一下。

关于php - 动态包含在 composer.json 中的克隆项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32661824/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com