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 适配或直接取用的。