rajeshreeputra/composer-dynamic-patches

提供了一种动态修补 Composer 包的方法。

1.0.0-beta1 2024-03-10 11:46 UTC

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