prhost / composer-merge-plugin
Composer插件,用于合并多个composer.json文件
Requires
- php: >=5.3.2
- composer-plugin-api: ^1.0
Requires (Dev)
- composer/composer: ~1.0.0
- jakub-onderka/php-parallel-lint: ~0.8
- phpunit/phpunit: ~4.8|~5.0
- squizlabs/php_codesniffer: ~2.1.0
This package is auto-updated.
Last update: 2024-09-21 23:40:37 UTC
README
Composer合并插件
在Composer运行时合并多个composer.json文件。
Composer合并插件旨在简化依赖管理,适用于包含composer.json文件且预期某些部署安装额外的Composer管理库的应用程序。它通过允许应用程序的最高级composer.json
文件提供一个可选的附加配置文件列表来实现这一点。当运行Composer时,它将解析这些文件并将它们的配置设置合并到基本配置中。然后,将使用这种组合配置下载额外的库并生成自动加载器。
Composer合并插件是为了帮助安装MediaWiki而创建的,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
文件
为了使composer-merge-plugin能够安装来自项目中的更新或新创建的子级composer.json
文件的依赖项,您需要运行以下命令:
$ composer update --lock
这将指示Composer重新计算顶级composer.json
文件的文件哈希,从而触发composer-merge-plugin查找子级配置文件并更新您的依赖项。
插件配置
插件从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)
- scripts(可选,请参阅下面的merge-scripts)
require
require
设置与include
设置相同,除非模式失败且至少匹配一个文件,否则将导致错误。
recurse
默认情况下,合并插件是递归的;如果一个包含的文件有一个 merge-plugin
部分,它也会被处理。可以通过添加 "recurse": false
设置来禁用此功能。
replace
默认情况下,Composer 的冲突解决引擎用于确定当多个文件指定了相同的包时应安装哪个版本的包。可以提供一个 "replace": true
设置来更改到“最后指定的版本获胜”的冲突解决策略。在此模式下,合并文件中找到的重复包声明将覆盖由早期文件做出的声明。文件按 include
设置指定的顺序加载,以字母顺序处理匹配的文件。
忽略重复
默认情况下,Composer 的冲突解决引擎用于确定当多个文件指定了相同的包时应安装哪个版本的包。可以通过提供一个 "ignore-duplicates": true
设置来更改到“首先指定的版本获胜”的冲突解决策略。在此模式下,合并文件中找到的重复包声明将被忽略,以优先考虑早期文件做出的声明。文件按 include
设置指定的顺序加载,以字母顺序处理匹配的文件。
注意:"replace": true
和 "ignore-duplicates": true
模式互斥。如果两者都设置,则将使用 "ignore-duplicates": true
。
合并-dev
默认情况下,包含文件的 autoload-dev
和 require-dev
部分会合并。一个 "merge-dev": false
设置将禁用此行为。
合并-extra
一个 "merge-extra": true
设置启用了合并包含文件 extra
部分的内 容。extra 部分的正常合并模式是接受找到的任何键的第一个版本(例如,主配置中的键胜过任何导入配置中找到的版本)。如果 replace
模式激活(见上方),则此行为会改变,最后找到的键将获胜(例如,主配置中的键被导入配置中的键所取代)。如果指定了 "merge-extra-deep": true
,则类似于 array_merge_recursive()
合并部分,但是重复的字符串数组键会被替换而不是合并,而数字数组键则按常规合并。合并 extra 部分的有用性取决于使用的 Composer 插件及其由 Composer 处理的顺序。
请注意,merge-plugin
部分不包括在合并过程中,但除非禁用递归(见上方),否则插件总会处理。
合并-scripts
一个 "merge-scripts": true
设置启用了合并包含文件 scripts
部分的内 容。scripts 部分的正常合并模式是接受找到的任何键的第一个版本(例如,主配置中的键胜过任何导入配置中找到的版本)。如果 replace
模式激活(见上方),则此行为会改变,最后找到的键将获胜(例如,主配置中的键被导入配置中的键所取代)。
注意:通过合并配置添加的 自定义命令 将在作为 composer run-script my-cool-command
调用时工作,但使用正常的 composer my-cool-command
快捷方式时不可用。
运行测试
$ composer install
$ composer test
贡献
错误、功能请求和其他问题应报告给 GitHub 项目。我们接受通过 GitHub 的拉取请求进行的代码和文档贡献。
- 该项目使用 PSR-2 编码标准。包含的测试配置使用 PHP 代码检查器来验证约定。
- 鼓励进行测试。我们的测试覆盖率并不完美,但我们希望它越来越好,所以请尽量在您的更改中包含测试。
- 保持文档更新。确保
README.md
和其他相关文档与您的更改保持一致。 - 每个特性一个拉取请求。尽量保持您的更改专注于解决单个问题。这将使我们更容易审查更改,并使您更容易确保已更新必要的测试和文档。
许可证
Composer 合并插件采用 MIT 许可证。有关更多详细信息,请参阅 LICENSE
文件。