多个Composer安装与(独立)模块化项目

时间:2017-07-09 17:52:40

标签: php laravel composer-php autoload

我正在尝试找到将composer用于模块化结构的最佳方法。

我们说我有这个框架树:

/cms
/site/addons

让我们说开发人员可以通过composer.json安装添加项目。 与/site/addons/MyNewFeature/composer.json

一样

所以下一个问题是/vendor位置。如果每个插件都有一个/vendor目录,我应该在主框架内自动加载它们,我认为它的性能太高,多个作曲家安装可能会安装很多相同的依赖项。而且我无法将它们全部安装在/vendor目录中,因为作曲家会自动删除当前安装中未包含的所有项目,并使用自己的锁定文件。

你怎么能为基于模块化项目的系统做多个作曲家安装;虽然每个项目都需要自己的作曲家供应商,但为了提高性能,最好只包含1个供应商安装。我还没有找到解决方案,并想知道你们是否有任何想法或引导我走向正确的方向。

这几乎就像你需要一个主/site/addons/vendor安装,它会自动进入每个插件并安装它们......

另一个解决方案就是使用composer来完成所有插件(安装/更新),这样可以减少对composer.json目录中所有内容的控制并造成问题。

1 个答案:

答案 0 :(得分:0)

经过一些研究和测试,我发现了这个概念。

这允许框架以设计方式手动安装/更新插件,并使用composer.json通配符路径在主repositories文件中安装/更新。

"repositories": [
        {
            "type": "path",
            "url": "../site/addons/*",
            "options": {
                "symlink": false
            }
        }
    ]

现在它将检查composer.json文件的所有addon目录,并将所有依赖项安装到我最初想要的通用/vendor目录中。

我不确定此后可能出现的问题,但到目前为止这给出了我想要的控制权。

框架只需要确保主json中的require具有所有已启用的插件。

https://getcomposer.org/doc/05-repositories.md#path