mlocati/composer-patcher

一个用于修补Composer包的Composer插件。

资助包维护!
mlocati
其他

安装次数: 183,573

依赖者: 7

建议者: 0

安全性: 0

星标: 6

关注者: 4

分支: 2

开放问题: 3

类型:composer-plugin

1.2.5 2022-06-10 16:28 UTC

This package is auto-updated.

Last update: 2024-08-30 01:28:53 UTC


README

Build Status

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

你真的想表示感谢吗?

你可以给我提供一份 月度咖啡 或一次性的 咖啡 😉