我正在尝试找到将composer用于模块化结构的最佳方法。
我们说我有这个框架树:
/cms
/site/addons
让我们说开发人员可以通过composer.json
安装添加项目。
与/site/addons/MyNewFeature/composer.json
所以下一个问题是/vendor
位置。如果每个插件都有一个/vendor
目录,我应该在主框架内自动加载它们,我认为它的性能太高,多个作曲家安装可能会安装很多相同的依赖项。而且我无法将它们全部安装在/vendor
目录中,因为作曲家会自动删除当前安装中未包含的所有项目,并使用自己的锁定文件。
你怎么能为基于模块化项目的系统做多个作曲家安装;虽然每个项目都需要自己的作曲家供应商,但为了提高性能,最好只包含1个供应商安装。我还没有找到解决方案,并想知道你们是否有任何想法或引导我走向正确的方向。
这几乎就像你需要一个主/site/addons/vendor
安装,它会自动进入每个插件并安装它们......
另一个解决方案就是使用composer来完成所有插件(安装/更新),这样可以减少对composer.json
目录中所有内容的控制并造成问题。
答案 0 :(得分:0)
经过一些研究和测试,我发现了这个概念。
这允许框架以设计方式手动安装/更新插件,并使用composer.json
通配符路径在主repositories
文件中安装/更新。
"repositories": [
{
"type": "path",
"url": "../site/addons/*",
"options": {
"symlink": false
}
}
]
现在它将检查composer.json文件的所有addon目录,并将所有依赖项安装到我最初想要的通用/vendor
目录中。
我不确定此后可能出现的问题,但到目前为止这给出了我想要的控制权。
框架只需要确保主json中的require
具有所有已启用的插件。