包含多个编写器存储库配置文件


Include multiple composer repository configuration files

我想将编写器存储库配置分解为不同的文件。

我使用本地和外部存储库,我希望将它们的配置分开。

这些文件将被拉到主编写器中。

这可能吗?

现在有一个插件叫做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" ]
},