我正在尝试找到使用 Composer 实现模块化结构的最佳方法。
假设我有这个框架树:
/cms
/site/addons
假设开发人员可以使用插件来添加他们的项目composer.json
安装。
喜欢/site/addons/MyNewFeature/composer.json
所以下一个问题是/vendor
地点。每个插件是否应该有一个/vendor
目录,我是否应该在主框架内自动加载它们,我认为这样的性能会太大,并且多个作曲家安装可能会安装很多相同的依赖项。我不能让它们全部安装在同一个中/vendor
目录如/site/addons/vendor
因为 Composer 会自动删除当前安装中未包含的所有项目并使用其自己的锁定文件。
如何为基于模块化项目的系统进行多个作曲家安装?虽然每个项目都需要自己的作曲家供应商,但为了性能,最好只包含 1 个供应商安装。我还没有找到解决方案,想知道你们中是否有人有想法或引导我走向正确的方向。
这几乎就像你需要一个主要的composer.json
安装会自动转到每个插件并安装它们......
另一个解决方案是仅对所有插件(安装/更新)使用作曲家,这给了我较少的控制权,并对位于/vendor
目录。
经过一些研究和测试,我发现了这个概念。
这允许框架按照设计的方式手动安装/更新插件,并在主框架内composer.json
文件使用repositories
通配符路径。
"repositories": [
{
"type": "path",
"url": "../site/addons/*",
"options": {
"symlink": false
}
}
]
现在它将检查所有插件目录中的composer.json文件并将其所有依赖项安装到通用文件中/vendor
像我原来想要的目录。
我不确定这样做以后可能会出现什么问题,但到目前为止,这提供了我想要的控制。
该框架只需要确保require
主 json 中包含所有已启用的插件。
https://getcomposer.org/doc/05-repositories.md#path https://getcomposer.org/doc/05-repositories.md#path
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)