rajeshreeputra / composer-dynamic-patches
提供了一种动态修补 Composer 包的方法。
1.0.0-beta1
2024-03-10 11:46 UTC
Requires
- composer-plugin-api: ^1.0 || ^2.0
- cweagans/composer-patches: ^2.0
Requires (Dev)
- composer/composer: ~1.0 || ~2.0
- phpunit/phpunit: ^9 || ^10
This package is auto-updated.
Last update: 2024-09-06 12:39:33 UTC
README
此插件允许您为任何包提供修补程序。
如果您不想在根包之外提供修补程序包,请考虑将其作为 repositories 键 中的包提供。
仅按包提供修补程序
{
"name": "rajeshreeputra/package",
"type": "metapackage",
"require": {
"vendor/package-patches": "~1.0"
},
"extra": {
"patches": {
"vendor/package-patches": [
{
"This is patch 1": "url/to/file1.patch",
"This is patch 2": "url/to/file2.patch"
}
]
}
}
}
按包和版本或版本约束提供修补程序
您可以按包提供修补程序,并可选地按版本约束提供
composer.json
{
"name": "rajeshreeputra/package",
"type": "metapackage",
"require": {
"vendor/package-patches": "~1.0"
},
"extra": {
"patches": {
"vendor/package-patches": {
"1.0.0": {
"This is patch 1.0.0 - 1": "url/to/file1.patch",
"This is patch 1.0.0 - 2": "url/to/file2.patch"
},
"1.0.5": {
"This is patch 1.0.5 - 1": "url/to/file1.patch",
"This is patch 1.0.5 - 2": "url/to/file2.patch"
},
"1.1.2": {
"This is patch 1.1.2 - 1": "url/to/file1.patch",
"This is patch 1.1.2 - 2": "url/to/file2.patch"
}
"1.1.*": {
"This is patch 1.1.* - 1": "url/to/file1.patch",
"This is patch 1.1.* - 2": "url/to/file2.patch"
}
}
}
}
}
注意: 当多个版本约束与目标包的版本匹配时,所有匹配的修补程序都将应用(通过它们的校验和进行规范化,因此不应出现重复)。
从 URL 或路径提供修补程序
您可以将修补程序对象的部分放入另一个 JSON 中,并通过 URL(或路径)加载它
{
"name": "rajeshreeputra/package",
"type": "project",
"require": {
"vendor/package-patches": "~1.0"
},
"extra": {
"patches-file": "url/to/file/patch.json"
}
}
http://url/to/file/patches.json
{
"vendor/package-patches": {
"1.0.0": {
"This is patch 1.0.0 - 1": "url/to/file1.patch",
"This is patch 1.0.0 - 2": "url/to/file2.patch"
},
"1.0.5": {
"This is patch 1.0.5 - 1": "url/to/file1.patch",
"This is patch 1.0.5 - 2": "url/to/file2.patch"
},
"1.1.2": {
"This is patch 1.1.2 - 1": "url/to/file1.patch",
"This is patch 1.1.2 - 2": "url/to/file2.patch"
}
"1.1.*": {
"This is patch 1.1.* - 1": "url/to/file1.patch",
"This is patch 1.1.* - 2": "url/to/file2.patch"
}
}
}
从本地存储的文件提供修补程序
您可以使用绝对路径或相对于应用程序根的路径。
composer.json
{
"name": "rajeshreeputra/package",
"type": "project",
"require": {
"vendor/package-patches": "~1.0"
},
"extra": {
"patches": {
"vendor/package-patches": {
"This is local patch": "./patches/file.patch"
}
}
}
}
我还添加了一个名为 "patches" 的新文件夹,与 composer.json 处于同一级别,并添加了一个名为 file.json 的修补程序文件,如下所示
# This patch file was generated by NetBeans IDE
# It uses platform neutral UTF-8 encoding and \n newlines.
--- a/src/SomeFile.php
+++ b/src/SomeFile.php
@@ -6,7 +6,7 @@
{
// apply patch to
// next line
- // This is old line
+ // This is new line
// some text
// some text
// some text
注意 补丁将以选项 -p1(移除第一个反斜杠)调用,并在库目录中。
然后运行更新依赖项和安装修补程序的命令
composer update vendor/package-patches
composer prl
composer prp