我的团队最近整合了一个Laravel代码库,该代码库非常适合多个网站。目前,我们正在将它们作为安装在centOS7配置文件上的应用程序运行。
每当需要一个新站点时,我们都会启动一个配置文件,并将代码克隆到其中。代码库在很大程度上取决于软件包(自定义laravel软件包)。当前,每个站点都提取我们开发的所有软件包。当前的区别是1).env文件。和2)主题配置文件(来自程序包,我将在后面介绍)。
我希望能够根据需要提取软件包,我不想提取我们开发的每个软件包。我的问题是,有没有一种方法可以拉入每个包装?我正在考虑从git中删除composer.json文件,并将其视为配置文件?我还考虑过生成composer.json文件。
最终,我们希望将CI / CD添加到该过程中并真正实现此过程的自动化。我真的在努力将代码库保存在一个存储库中。我错了吗?我们是否应该拆分代码库,每个项目一个仓库?但是随后您必须考虑更新已成为噩梦。
当前,主题是作为包引入的。每个站点在作曲家文件中都有所有主题。该应用程序具有可以登录并将主题设置为活动的管理员用户。不过,我还是希望它只提取必要的主题资源。
对不起,如果我走了一点儿,但我想知道如何正确缩放应用程序。
谢谢!
tldr;如何能够使用一个代码库运行多个网站,同时能够指定不同的必需自定义程序包?
答案 0 :(得分:1)
我还没有实际测试过,但是您可以通过定义多个composer.json
文件来完成所需的工作。阅读有关定义other composer.json files
然后,在每个composer.json
文件中定义一个different vendor directory。 示例:
{
"config": {
"vendor-dir": "plugins"
}
}
接下来,在每次安装中,从文档中指定要安装的composer.json
文件:
通过设置COMPOSER env变量,可以将composer.json的文件名设置为其他名称。
文档示例:
COMPOSER=composer-other.json php composer.phar install
有关specifying the environment的更多信息。
最后但并非最不重要的是,您将必须针对特定的供应商目录引导网站或应用程序:
require __DIR__.'/../custom-vendor-directory/autoload.php';
可以在应用程序的index.php
文件中对此进行自定义。 original source。