我想将编写器存储库配置分解为不同的文件。
我使用本地和外部存储库,我希望将它们的配置分开。
这些文件将被拉到主编写器中。
这可能吗?
现在有一个插件叫做composer-merge-plugin,它可以在运行时合并多个composer文件。
用法:
假设您的主composer.json
文件位于基本路径中,然后您希望从/plugins
的子目录加载其他composer.json
文件:
/
|-- 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
}
}
}
我很晚才加入,但我有一个类似的问题,并解决了它没有一个作曲家插件。
/root
|-- composer.json
|-- /vendor
|-- /more-dependencies
|-- composer.json
你的编辑器文件在根目录:
{
"repositories": [
{
"type": "path",
"url": "more-dependencies"
}
],
"require": {
"something/more-dependencies": "dev-master"
}
}
您在其他目录(more-dependencies
)中的composer文件必须至少包含以下内容:
{
"name": "something/more-dependencies"
}
你现在可以在你的根目录composer install
和任何指定在你的子文件夹的composer.json
将降落在你的根目录的供应商文件夹。
❗警告:只有root的编写器。Json可以包含存储库元数据,而不是子文件夹(composer-doc)中的元数据。
旁注:在我的情况下,作曲家。子目录中的Json是一个可克隆的资源。我使用编写器钩子pre-install-cmd来确保"更多依赖"。现有的和最新的
"scripts": {
"more-dependencies": [
"git -C more-dependencies pull || git clone https://example/more-dependencies.git more-dependencies"
],
"pre-install-cmd": [ "@more-dependencies" ],
"pre-update-cmd": [ "@more-dependencies" ]
},