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