我可以用composer.json为我的包指定一个根文件夹(相对于项目根文件夹)吗



我有一个关于composer.json及其自动加载部分的问题。

给定:我有很多模块,它们位于{projectRoot}/app/code/VendorName或vendor/vendor名称中示例:

app/code/VendorName/ModuleACore
app/code/VendorName/ModuleBCore
app/code/VendorName/ModuleBAddon
app/code/VendorName/ModuleBSubModuleA
app/code/VendorName/ModuleBSubModuleB
app/code/VendorName/ModuleBSubModuleC
app/code/VendorName/ModuleCCore
app/code/VendorName/ModuleCAddon
app/code/VendorName/ModuleCSubModuleA
app/code/VendorName/ModuleCSubModuleB
app/code/VendorName/ModuleCSubModuleC

等等。我不能把这些模块合并成一个,因为这是一个巨大的可扩展的东西。客户可以安装几个模块来满足他们的需求,如果他们需要一些额外的功能——他们可以通过安装他们需要的子模块来扩展解决方案。所以,它无法合并。。。

每个模块都有自己的composer.json,如下所示:

{
"name": "vendor-name/module-name",
...
"autoload": {
...
"psr-4": {
"VendorName\ModuleName\": ""
}
}
}

此外,所有这些都可以安装在{projectRoot}/供应商/供应商名称/*中

那么,有没有一种方法可以用每个模块的composer.json文件构建这样的树:

app
code
VendorName
ModuleA
ModuleACore
ModuleB
ModuleBCore
ModuleBAddon
ModuleBSubModules
ModuleBSubModuleA
ModuleBSubModuleB
ModuleBSubModuleC
ModuleC
ModuleCCore
ModuleCAddon
ModuleCSubModules
ModuleCSubModuleA
ModuleCSubModuleB
ModuleCSubModuleC

我在谷歌上找到的只是自动加载部分的psr-4,但它只指定了包文件夹中包文件的路径。像

"VendorName\ModuleName\": "src/" // -> app/code/VendorName/ModuleName/src/*
// or vendor/vendor-name/module-name/src/*

但我需要指定VendorName和ModuleName之间的一部分路径,并且我需要它适用于两种安装方式:项目源(app/code/(或供应商(vendor/(

我发誓我在一个供应商代码中看到了它,但我不记得了,他们是如何做到的…

Sowy有点模糊的例子,但NDA:(C

有一个wikimedia composer合并插件,它可以在目录中搜索composer.jsons,并将它们安装在根供应商中。

https://github.com/wikimedia/composer-merge-plugin

有了这个,你可以在其他地方设置你的插件,composer将从这一点开始安装它们。

也许这能解决你的问题?

相关内容

  • 没有找到相关文章

最新更新