包含多个composer存储库配置文件

时间:2013-03-14 19:44:50

标签: php composer-php

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

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

运行安装或更新任务时,这些文件将被拉入主composer.json。

这可能吗?

2 个答案:

答案 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
        }
    }
}