我想将composer存储库配置分解为不同的文件。
我使用本地和外部存储库,我希望将它们的配置分开。
运行安装或更新任务时,这些文件将被拉入主composer.json。
这可能吗?
答案 0 :(得分:1)
我参加聚会已经很晚了,但我遇到了类似的问题,并且在没有 Composer 插件的情况下解决了这个问题。
/root
|-- composer.json
|-- /vendor
|-- /more-composer-dependencies
|-- composer.json
您在根目录中的作曲家文件:
{
"repositories": [
{
"type": "path",
"url": "more-composer-dependencies"
}
],
"require": {
"something/more-dependencies": "dev-master"
}
}
其他目录 (more-composer-dependencies
) 中的 Composer 文件必须至少包含以下内容:
{
"name": "something/more-dependencies"
}
您现在可以在根目录中composer install
,子文件夹的 composer.json
中指定的任何内容都将位于根目录的供应商文件夹中。
❗警告:只有root的composer.json可以包含仓库元数据,不能包含子文件夹(composer-doc)中的元数据。
旁注:就我而言,子目录中的 composer.json 是可克隆的资源。我使用作曲家钩子 pre-install-cmd 来确保“更多依赖项”存在且是最新的。
答案 1 :(得分:0)
现在有一个名为composer-merge-plugin的插件,它可以在运行时合并多个作曲家文件。
假设您的主composer.json
文件位于基本路径中,然后您有其他composer.json
个文件要从/plugins
中的子目录加载:
/
|-- composer.json
|-- /plugins
|-- /kittenizer
|-- composer.json
|-- /puppyizer
|-- composer.json
在您的主composer.json
文件中,您可以使用以下命令加载这些文件:
{
"require": {
"wikimedia/composer-merge-plugin": "~1"
},
"extra": {
"merge-plugin": {
"include": [
"plugins/*/composer.json"
],
"recurse": true,
"replace": false,
"merge-dev": true,
"merge-extra": false
}
}
}