cloudshop/composer-merge-plugin

Composer插件,用于合并多个composer.json文件

安装: 0

依赖: 1

建议者: 0

安全: 0

类型:composer-plugin

v1.3.2 2017-10-05 02:19 UTC

This package is auto-updated.

Last update: 2019-03-01 01:41:11 UTC


README

Latest Stable Version License Build Status Code Coverage

Composer合并插件

Composer运行时合并多个composer.json文件。

Composer合并插件旨在简化应用程序的依赖管理,这些应用程序包含composer.json文件,并期望某些部署安装额外的Composer管理库。它通过允许应用程序的顶级composer.json文件提供一个可选的附加配置文件列表来实现这一点。当运行Composer时,它将解析这些文件,并将它们的配置设置合并到基本配置中。然后,将使用此组合配置下载额外的库并生成自动加载器。

Composer合并插件是为了帮助安装MediaWiki而创建的,它具有核心库要求以及可能通过Composer管理的可选库和扩展。

安装

Composer合并插件需要Composer 1.0.0或更高版本。

$ composer require wikimedia/composer-merge-plugin

用法

{
    "require": {
        "wikimedia/composer-merge-plugin": "dev-master"
    },
    "extra": {
        "merge-plugin": {
            "include": [
                "composer.local.json",
                "extensions/*/composer.json"
            ],
            "require": [
                "submodule/composer.json"
            ],
            "recurse": true,
            "replace": false,
            "ignore-duplicates": false,
            "merge-dev": true,
            "merge-extra": false,
            "merge-extra-deep": false,
            "merge-scripts": false
        }
    }
}

插件配置

插件从你的composer.json的extra部分的merge-plugin部分读取其配置。一个include设置是必需的,用于告诉Composer合并插件要合并哪些文件。

include

include设置可以指定一个值或一个值的数组。每个值都被视为一个PHP glob()模式,用于标识要合并到当前Composer执行根包配置中的额外的composer.json样式配置文件。

以下配置文件的以下部分将合并到Composer根包配置中,就像它们被直接包含在顶级composer.json文件中一样

require

require设置与include相同,除非模式未匹配至少一个文件,则会引发错误。

recurse

默认情况下,合并插件是递归的;如果包含的文件有一个merge-plugin部分,它也会被处理。可以通过添加一个"recurse": false设置来禁用此功能。

replace

默认情况下,Composer的冲突解决引擎用于确定当多个文件指定同一包时应安装哪个版本的包。可以提供一个"replace": true设置来更改到“最后指定版本获胜”的冲突解决策略。在此模式下,合并文件中找到的重复包声明将覆盖早期文件中做出的声明。文件按include设置中指定的顺序加载,使用glob文件按字母顺序处理。

ignore-duplicates

默认情况下,Composer 的冲突解决引擎用于确定当多个文件指定相同的包时应该安装哪个版本。可以通过提供 "ignore-duplicates": true 设置来切换到“首先指定的版本获胜”的冲突解决策略。在这种模式下,合并文件中找到的重复包声明将被忽略,以优先考虑较早文件中做出的声明。文件按 include 设置中指定的顺序加载,globbed 文件按字母顺序处理。

注意: "replace": true"ignore-duplicates": true 模式是互斥的。如果两者都设置了,则将使用 "ignore-duplicates": true

merge-dev

默认情况下,包含文件的 autoload-devrequire-dev 部分将合并。一个 "merge-dev": false 设置将禁用此行为。

merge-extra

一个 "merge-extra": true 设置可以合并包含文件中 extra 部分的内。正常合并模式是接受任何键的第一个版本(例如,主配置中的键胜过任何导入配置中找到的版本)。如果 replace 模式激活(见上方替换),则此行为将改变,最后找到的键将获胜(例如,主配置中的键被导入配置中的键替换)。如果指定了 "merge-extra-deep": true,则类似于 替换,则将合并部分,但重复的字符串数组键将被替换而不是合并,而数字数组键将按常规合并。根据所使用的 Composer 插件及其被 Composer 处理的顺序,合并额外部分的用途会有所不同。

请注意,merge-plugin 部分不包括在合并过程中,但除非禁用 递归,否则总是由插件处理。

merge-scripts

一个 "merge-scripts": true 设置可以合并包含文件中 scripts 部分的内。正常合并模式是接受任何键的第一个版本(例如,主配置中的键胜过任何导入配置中找到的版本)。如果 replace 模式激活(见上方替换),则此行为将改变,最后找到的键将获胜(例如,主配置中的键被导入配置中的键替换)。

注意:通过合并配置添加的 自定义命令 在作为 composer run-script my-cool-command 调用时将正常工作,但无法使用正常的 composer my-cool-command 快捷方式。

运行测试

$ composer install
$ composer test

贡献

错误、功能请求和其他问题应报告给 GitHub 项目。我们通过 GitHub 的拉取请求接受代码和文档贡献。

  • 项目使用 PSR-2 编码标准。包含的测试配置使用 PHP Code Sniffer 验证约定。
  • 鼓励编写测试。我们的测试覆盖率并不完美,但我们希望它变得更好而不是更差,因此请尽量在更改中包含测试。
  • 保持文档更新。确保 README.md 和其他相关文档与您的更改保持更新。
  • 每个功能一个拉取请求。尽量保持您的更改集中于解决单个问题。这将使我们更容易审查更改,并使您更容易确保您已更新必要的测试和文档。

许可

Composer 合并插件受 MIT 许可证的许可。有关详细信息,请参阅 LICENSE 文件。