我有一个composer项目,我需要为它创建一个也将使用composer的自定义插件。主项目和插件都使用相同的依赖项,但版本不同。我应该如何解决彼此之间的这些依赖关系?因此,插件使用了来自其composer供应商的依赖项,而不是来自主项目的供应商?
例如,我发现了这个解决方案:https://github.com/TypistTech/imposter-plugin但我觉得它不太优雅。
与最近的另一个问答进行比较;插件和主题之间的依赖冲突,这应该添加更一般的说明。
由于您通常使用Composer来解决依赖关系,因此您也可以在此处使用它。然而,在你的问题中似乎有一点误解,或者至少有些不清楚:
所以插件使用来自其composer供应商的依赖项,而不是来自主项目的供应商?
在一个组件项目中,只有一个供应商文件夹,即根项目的文件夹,您可能指的是"主要项目">。
这与仅对"em"的描述相结合;项目"和";插件">可能有一点机会,它要么是一个由Composer管理其依赖项的项目("项目">(;插件"。
或者你只有两个独立的项目("项目">和"插件">(,它们可以相互独立地工作(通常情况下,<插件>材料不是这样(。
归根结底,这不是Composer的问题,而是你的软件项目依赖关系能否以兼容的方式解决。
由于PHP有一个全局名称空间,而且它是静态的,如果你在相同的软件包中确实有不兼容的依赖项,你需要分叉这些并重命名名称空间,这样你就可以有一个模块a的依赖项和一个模块B的依赖项;项目"和";插件">您也有管理依赖包的项目,例如重写命名空间,然后通过存储库提供给composer。