mlocati / composer-patcher
一个用于修补Composer包的Composer插件。
1.2.5
2022-06-10 16:28 UTC
Requires
- php: >= 5.3.2
- composer-plugin-api: ^1.1 || ^2
Requires (Dev)
- composer/composer: ^1.1 || ^2
- phpunit/phpunit: ^4.8 || ^5.7 || ^6.5 || ^7.5 || ^8.4 || ^9.4
Conflicts
README
composer-patcher
Composer的简单修补插件。将本地或远程文件中的修补程序应用于使用Composer所需的任何包。
用法
示例 composer.json
{ "require": { "mlocati/composer-patcher": "~1.0", "concrete5/core": "~8.4" }, "extra": { "patches": { "concrete5/core": { "This is the patch description": "https://www.example.com/remote.patch", "This is another patch": "path/relative/to/this/package/local.patch" } }, "patches-file": { "path/relative/to/this/package/patch-list.json" }, "allow-subpatches": [ "concrete5/core" ], "patch-errors-as-warnings": true, "patch-temporary-folder": "/var/tmp" } }
如果你使用 patches-file
配置键,它必须是一个具有此语法的本地或远程JSON文件
{ "patches": { "vendor/project": { "Patch description #1": "https://www.example.com/remote.patch", "Patch description #2": "path/relative/to/the/defining/package/local.patch" } } }
允许从依赖项应用修补程序
你可以使用 allow-subpatches
来允许依赖包安装修补程序。它可以
false
[默认值] 防止依赖包安装修补程序true
允许所有依赖包安装修补程序- 一个包含可以安装修补程序的包处理器的数组
使用HTTP URL的修补程序
Composer 阻止 你从HTTP URL下载任何内容,你可以通过在 composer.json
的配置部分添加 secure-http
设置来为你的项目禁用此功能。请注意,config
部分应在 composer.json
的根目录下。
{ "config": { "secure-http": false } }
然而,始终建议设置HTTPS以防止中间人代码注入。
修补级别
为了指定修补程序级别,你可以使用修补路径的扩展形式。例如,如果修补程序级别应为 -p4
,你可以将
{ "patches": { "vendor/project": { "Patch description": "https://www.example.com/remote.patch", } } }
替换为
{ "patches": { "vendor/project": { "Patch description": { "path": "https://www.example.com/remote.patch", "levels": ["-p4"] } } } }
它可以
false
[默认值] 防止依赖包安装修补程序true
允许所有依赖包安装修补程序- 一个包含可以安装修补程序的包处理器的数组
目标包
你可以指定修补程序应该应用于的包版本。要做到这一点,只需在包处理器中指定版本即可
{ "patches": { "vendor/project:1.1.3": { "Patch description": "https://www.example.com/remote.patch", } } }
你可以使用 Composer语法 来指定适用的版本。
包含对composer.json文件修改的修补程序
因为修补是在Composer计算依赖关系和安装包之后发生的,修补程序中引入的底层依赖项的 composer.json
文件更改对已安装的包 没有影响。
如果你需要修改依赖项的 composer.json
或其底层依赖项,你不能使用此插件。相反,你必须执行以下操作之一
- 努力解决上游包中的底层问题。
- 分支包,并在你的根
composer.json
中 指定你的分支作为包仓库 - 在根
composer.json
中指定兼容的包版本要求
错误处理
你可以使用 extra.patch-errors-as-warnings
配置选项来指导 composer-patcher
在发生错误时做什么。它可以
true
[默认值] 在发生错误时简单地输出错误消息false
在发生错误时退出Composer
鸣谢
大量代码是从 cweagans/composer-patcher
适配或直接取用的。