使用(独立)模块化项目安装多个 Composer
Posted
技术标签:
【中文标题】使用(独立)模块化项目安装多个 Composer【英文标题】:Multiple Composer Installs with (Independent) Modular Projects 【发布时间】:2017-12-13 10:31:23 【问题描述】:我正在努力寻找将 composer 用于模块化结构的最佳方式。
假设我有这个框架树:
/cms
/site/addons
假设开发人员可以使用插件来添加他们的composer.json
安装项目。
赞/site/addons/MyNewFeature/composer.json
所以下一个问题是/vendor
位置。如果每个插件都有一个/vendor
目录,我是否应该在主框架中自动加载它们,我认为这样的性能会太多,并且多个作曲家安装可能会安装很多相同的依赖项。而且我不能让它们都安装在同一个/vendor
目录中,比如/site/addons/vendor
,因为composer 会自动删除当前安装中未包含的所有项目并使用它自己的锁定文件。
您如何为基于模块化项目的系统安装多个作曲家?虽然每个项目都需要自己的作曲家供应商,但为了性能,最好只包括 1 个供应商安装。我还没有找到解决方案,想知道你们中是否有人有想法或引导我走向正确的方向。
这几乎就像您需要一个主要的composer.json
安装,它会自动转到每个插件并安装它们......
另一种解决方案是对所有插件(安装/更新)使用作曲家,这给了我较少的控制权,并且对位于 /vendor
目录中的所有内容提出了问题。
【问题讨论】:
【参考方案1】:经过一些研究和测试,我遇到了这个概念。
这允许框架按照其设计方式手动安装/更新插件,并在主composer.json
文件中使用repositories
通配符路径。
"repositories": [
"type": "path",
"url": "../site/addons/*",
"options":
"symlink": false
]
现在它将检查 composer.json 文件的所有插件目录,并将它们的所有依赖项安装到一个通用的 /vendor
目录中,就像我最初想要的那样。
我不确定这样做以后可能会出现什么问题,但到目前为止,这提供了我想要的控制。
框架只需要确保主 json 中的 require
具有所有启用的插件。
https://getcomposer.org/doc/05-repositories.md#path
【讨论】:
以上是关于使用(独立)模块化项目安装多个 Composer的主要内容,如果未能解决你的问题,请参考以下文章
win10安装composer时,提示找不到php拓展的模块,这是为啥