wkse / composer-merge-plugin
Composer 插件,用于合并多个 composer.json 文件
Requires
- php: >=5.3.2
- composer-plugin-api: ^1.0
Requires (Dev)
- composer/composer: 1.0.*@dev
- jakub-onderka/php-parallel-lint: ~0.8
- phpunit/phpunit: ~4.8|~5.0
- squizlabs/php_codesniffer: ~2.1.0
This package is not auto-updated.
Last update: 2024-09-20 17:32:40 UTC
README
Composer 合并插件
在 Composer 运行时合并多个 composer.json 文件。
Composer 合并插件旨在简化那些分发 composer.json 文件并期望某些部署安装额外的 Composer 管理库的应用程序的依赖关系管理。它通过允许应用程序的顶级 composer.json
文件提供一个可选的附加配置文件列表来实现。当运行 Composer 时,它将解析这些文件并将它们的配置设置合并到基本配置中。然后,将使用此组合配置下载额外的库并生成自动加载器。
Composer 合并插件是为了帮助安装 MediaWiki 而创建的,MediaWiki 具有核心库要求以及可能通过 Composer 管理的可选库和扩展。
安装
$ 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,
"merge-dev": true,
"merge-extra": false
}
}
}
插件配置
插件从 composer.json 的 extra
部分的 merge-plugin
部分读取其配置。必须有一个 include
设置来告诉 Composer 合并插件要合并哪些文件。
include
include
设置可以指定单个值或值数组。每个值都被视为 PHP glob()
模式,用于标识要合并到当前 Composer 执行的根包配置中的额外的 composer.json 风格配置文件。
以下配置文件的以下部分将被合并到 Composer 根包配置中,就像它们直接包含在顶级 composer.json 文件中一样
- autoload
- autoload-dev(可选,见下文 merge-dev)
- conflict
- provide
- replace
- repositories
- require
- require-dev(可选,见下文 merge-dev)
- suggest
- extra(可选,见下文 merge-extra)
require
require
设置与 [include](#include)
相同,除非模式无法匹配至少一个文件,否则它将导致错误。
recurse
默认情况下,合并插件是递归的;如果包含的文件有一个 merge-plugin
部分,它也将被处理。可以通过添加一个 "recurse": false
设置来禁用此功能。
replace
默认情况下,Composer 的冲突解决引擎用于确定在多个文件指定了同一软件包时应该安装哪个版本的软件包。可以提供一个 "replace": true
设置来更改到“最后指定的版本获胜”的冲突解决策略。在此模式下,在合并文件中找到的重复的软件包声明将覆盖由早期文件做出的声明。文件按 include
设置中指定的顺序加载,globbed 文件按字母顺序处理。
merge-dev
默认情况下,包含文件的 autoload-dev
和 require-dev
部分将被合并。一个 "merge-dev": false
设置将禁用此行为。
merge-extra
将 "merge-extra": true
设置启用后,除了合并被包含文件的 extra
部分内容外,还可以合并其他内容。对于 extra
部分的常规合并模式是接受找到的任何键的第一个版本(例如,主配置中的键会覆盖在导入的配置中找到的版本)。如果 replace
模式处于活动状态(见上文),则此行为将改变,最后找到的键将获胜(例如,主配置中的键会被导入配置中的键所替换)。合并 extra
部分的有用性将根据所使用的 Composer 插件以及它们被 Composer 处理的顺序而有所不同。
请注意,merge-plugin
部分在合并过程中被排除,但除非禁用 递归,否则插件总是会被处理。
运行测试
$ composer install
$ composer test
贡献
有关错误、功能请求和其他问题,请向 GitHub 项目 报告。我们通过 GitHub 上的 Pull Requests 接受代码和文档贡献。
- 项目使用 PSR-2 编码标准。包含的测试配置使用 PHP Code Sniffer 来验证约定。
- 鼓励进行测试。我们的测试覆盖率并不完美,但我们希望它变得更好,而不是更差,因此请尽量在您的更改中包含测试。
- 保持文档最新。确保
README.md
和其他相关文档与您的更改保持最新。 - 每个功能一个 pull request。尽量保持您的更改专注于解决单一问题。这将使我们可以更容易地审查更改,并使您可以确保已更新必要的测试和文档。
许可证
Composer Merge 插件受 MIT 许可证的许可。有关更多详细信息,请参阅 LICENSE
文件。