iweb/composer-patches

将本地或远程文件中的补丁应用到属于给定 composer 项目的任何包中。补丁可以在项目和包级别上定义。提供可选的补丁版本控制、排序、自定义补丁应用器配置和测试/故障排除的补丁命令支持。

安装: 11,513

依赖者: 0

建议者: 0

安全性: 0

星级: 0

关注者: 0

分支: 40

类型:composer-plugin


README

Latest Stable Version Build Status Total Downloads Daily Downloads Minimum PHP Version Scrutinizer Code Quality Code Climate License

将本地或远程文件中的补丁应用到属于给定 composer 项目的任何包中。补丁可以在包配置或单独的 JSON 文件中的项目和包级别上定义。还提供声明式模式(在补丁文件中嵌入信息)。

插件应用补丁的方式(命令、预检查)完全可配置(包括用于应用补丁的实际命令),可以通过项目的 composer.json 文件进行配置。

请注意,插件保留在非常旧的 PHP 版本上,因为遗留软件通常是需要补丁的最常见上下文。

完整文档

  • 基本用法 - 通过配置文件或嵌入元数据定义补丁
  • 高级用法 - 定义补丁时的高级用法选项
  • 配置 - 补丁应用器的配置选项
  • 命令 - 插件附带的 CLI 命令的详细信息
  • 错误处理 - 处理遇到的错误
  • 开发 - 插件开发工作流程的详细信息
  • 示例 - 插件用法的示例
  • 变更 - 每个插件发布时的变更/修复列表

快速入门

可以通过两种方式针对 Composer 包应用补丁

  • 嵌入式元数据(推荐默认方法)
  • JSON 声明和嵌入式(推荐用于远程补丁)

用法:嵌入式元数据

{
  "require": {
    "some/package-name": "1.2.3"
  },
  "extra": {
    "patcher": {
      "search": "patches"
    }
  }
}

补丁/changes.patch 的内容

This patch changes... 
absolutely everything

@package some/package-name

--- Models/Example.php.org
+++ Models/Example.php
@@ -31,7 +31,7 @@
      */
     protected function someFunction($someArg)
     {
-        $var1 = 123;
+        $var1 = 456;
         /**
          * rest of the logic of the function
          */

完整的标签选项列表(覆盖插件的所有功能)可以在此处找到。

请注意,标签涵盖了模块的大部分功能,因此为补丁的 json 声明提供的每个解释也都适用于标签。

用法:JSON 声明

{
  "require": {
    "some/package-name": "1.2.3"
  },
  "extra": {
    "patches": {
      "some/package-name": {
        "This patch changes ... absolutely everything": "patches/changes.patch",
        "remote patch": "http://www.example.com/remote-patch.patch",
        "remote patch with checksum check": {
          "source": "http://www.example.com/other-patch.patch",
          "sha1": "5a52eeee822c068ea19f0f56c7518d8a05aef16e"
        }
      }
    }
  }
}

补丁/changes.patch 的内容

--- Models/Example.php.org
+++ Models/Example.php
@@ -31,7 +31,7 @@
      */
     protected function someFunction($someArg)
     {
-        $var1 = 123;
+        $var1 = 456;
         /**
          * rest of the logic of the function
          */

应用器配置

可以通过更改补丁器配置或引入额外的补丁应用器来操纵补丁应用的方式。

在大多数情况下,不应重新配置模块,因为它附带合理的默认值。默认支持的补丁应用器:补丁、git。

有关此主题的更多信息,请参阅此处

升级

在升级模块时,可能会遇到关于找不到类或类构造函数参数错误等奇怪的错误。

这通常意味着在升级后,某些类的类结构或构造函数足迹已更改,这意味着插件可能会使用旧版本和新版本中的某些类。

由于修补程序在项目安装过程中非常晚才启动(在自动加载生成之前),建议开发人员重新执行 composer install

理想情况下,插件应始终通过在 composer update 调用中添加显式的 --no-plugins 标志来更新,以避免使用可能来自两个不同插件版本混合逻辑的插件时出现的问题。