Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Composer php 使用Composer和Drupal应用修补程序的问题_Composer Php_Drupal 8 - Fatal编程技术网

Composer php 使用Composer和Drupal应用修补程序的问题

Composer php 使用Composer和Drupal应用修补程序的问题,composer-php,drupal-8,Composer Php,Drupal 8,需要澄清一下,因为我不够彻底 我有contrib模块Lazyloader。 我正在应用此修补程序:从本期开始 这个补丁创建了我们不喜欢的随机SVG图像。因此,我们希望更新代码并创建一个灰色SVG占位符图像。 使用补丁中的代码,我做了一些更新,我想基本上做到以下几点: 安装Lazyloader 修补 使用我自己的自定义代码进行修补,这需要以前的修补程序 当我应用自制补丁时,会创建3个新目录,但这不应该发生: 模块/contrib/lazyloader/b/ 模块/contrib/lazy

需要澄清一下,因为我不够彻底

我有contrib模块Lazyloader。

  • 我正在应用此修补程序:从本期开始
这个补丁创建了我们不喜欢的随机SVG图像。因此,我们希望更新代码并创建一个灰色SVG占位符图像。 使用补丁中的代码,我做了一些更新,我想基本上做到以下几点:

安装Lazyloader

  • 修补
  • 使用我自己的自定义代码进行修补,这需要以前的修补程序
当我应用自制补丁时,会创建3个新目录,但这不应该发生:

  • 模块/contrib/lazyloader/b/
  • 模块/contrib/lazyloader/contrib/
  • 模块/contrib/lazyloader/modules/
模块已安装在modules/contrib/lazyloader下,应创建的唯一目录是modules/contrib/lazyloader/css和文件名.css

我尝试了无前缀(如果使用此前缀,则无法应用修补程序)

我用

lando composer update drupal/lazyload
。。。但是它创建了一个我没有包含在补丁中的新目录

我发现了,但我不确定这是否影响了我的问题

我认为这是补丁级别和
cweagans/composer补丁的问题

这是我的补丁

diff --git a/modules/contrib/lazyloader/css/grey_svg.css b/modules/contrib/lazyloader/css/grey_svg.css
new file mode 100644
index 000000000..573a3bb74
--- /dev/null
+++ b/modules/contrib/lazyloader/css/grey_svg.css
@@ -0,0 +1,3 @@
+.lazyload {
+  background-color: lightgrey;
+}
diff --git a/modules/contrib/lazyloader/lazyloader.libraries.yml b/modules/contrib/lazyloader/lazyloader.libraries.yml
index 99e023f00..ef4d1c6ff 100644
--- a/modules/contrib/lazyloader/lazyloader.libraries.yml
+++ b/modules/contrib/lazyloader/lazyloader.libraries.yml
@@ -15,3 +15,8 @@ lazysizes-min.cdn:
     gpl-compatible: true
   js:
     https://cdnjs.cloudflare.com/ajax/libs/lazysizes/2.0.0/lazysizes.min.js: { type: external, minified: true }
+
+udesa-grey-svg:
+  css:
+    theme:
+      css/grey_svg.css: {}
diff --git a/modules/contrib/lazyloader/lazyloader.module b/modules/contrib/lazyloader/lazyloader.module
index 24998ed18..dc872356f 100644
--- a/modules/contrib/lazyloader/lazyloader.module
+++ b/modules/contrib/lazyloader/lazyloader.module
@@ -118,3 +118,10 @@ function lazyloader_libraries_info() {

   return $libraries;
 }
+
+/**
+ * Implements hook_libraries_info().
+ */
+function lazyloader_page_attachments(array &$page) {
+  $page['#attached']['library'][] = 'lazyloader/udesa-grey-svg';
+}
这也是我的composer.json补丁

    "drupal/lazyloader": {
        "Provide option to use a image style as the placeholder image": "https://www.drupal.org/files/issues/2018-11-29/lazyloader-LQIP-2905310-6.patch",
        "Create black SVG as placeholder image": "patches/lazyloader/lazyloader-create-black-svg.patch"
    }
补丁名不是问题,我一直在玩弄其中几个

解决方案>我了解解决方案的内容

1-使用--首选源代码安装模块,并使用我希望从drupal.org获得的补丁 2-进入模块/contrib/lazyloader 3-我的头支与补片的变化分离 4-做了我自己的改变,因为我需要从drupal.org在第一个地方的补丁 5-使用我的更改创建我自己的修补程序


工作完美

您的补丁应该是git repo模块的本地补丁。路径必须如下所示:

diff --git a/lazyloader/css/grey_svg.css b/lazyloader/css/grey_svg.css
而不是:

diff --git a/modules/contrib/lazyloader/css/grey_svg.css b/modules/contrib/lazyloader/css/grey_svg.css
contrib模块的路径取自composer.json(drupal/lazyloader)

确保您使用的是contrib模块git repo来创建补丁(而不是drupal core)

从零开始,过程应该是这样的:

diff --git a/lazyloader/css/grey_svg.css b/lazyloader/css/grey_svg.css
  • 从项目根文件夹中,使用composer从源代码安装lazyloader:
  • 使用您喜爱的IDE对代码进行更改
  • 创建修补程序:
  • 你的composer.json看起来不错。下次运行composer安装或composer更新时,将安装修补程序

  • 您的补丁应该是git repo模块的本地补丁。路径必须如下所示:

    diff --git a/lazyloader/css/grey_svg.css b/lazyloader/css/grey_svg.css
    
    而不是:

    diff --git a/modules/contrib/lazyloader/css/grey_svg.css b/modules/contrib/lazyloader/css/grey_svg.css
    
    contrib模块的路径取自composer.json(drupal/lazyloader)

    确保您使用的是contrib模块git repo来创建补丁(而不是drupal core)

    从零开始,过程应该是这样的:

    diff --git a/lazyloader/css/grey_svg.css b/lazyloader/css/grey_svg.css
    
  • 从项目根文件夹中,使用composer从源代码安装lazyloader:
  • 使用您喜爱的IDE对代码进行更改
  • 创建修补程序:
  • 你的composer.json看起来不错。下次运行composer安装或composer更新时,将安装修补程序

  • 您可以将补丁上传到某处()或其他地方吗?您还可以添加
    composer.json
    中的行吗?应该像
    “patches”:{“drupal/lazyloader”:{“您的补丁描述”:“/patches/Your_patch_file.patch”}
    请改进这个问题:创建了(3个)目录中的哪一个?都是吗?你不想创建它们吗?补丁里面到底是什么?请将补丁添加到问题中。我更新了我的问题,我希望它现在更清晰一点!您可以将补丁上传到某处()或其他地方吗?您还可以添加
    composer.json
    中的行吗?应该像
    “patches”:{“drupal/lazyloader”:{“您的补丁描述”:“/patches/Your_patch_file.patch”}
    请改进这个问题:创建了(3个)目录中的哪一个?都是吗?你不想创建它们吗?补丁里面到底是什么?请将补丁添加到问题中。我更新了我的问题,我希望它现在更清晰一点!好的,我明白你的意思,但是我怎样才能做到呢?它是否取决于我从何处创建修补程序?我应该从/modules/contrib/lazyloader创建它吗?composer.json中的路径取自何处?我没能在那里看到任何路径。另外,感谢您抽出时间回复!我假设这是因为您正在使用drupal git repo为contrib模块创建补丁。您需要安装lazyloader并在composer中添加--prefersource(因此您将获得lazyloader的git repo),移动到模块文件夹并运行“git diff…”命令。我对我的问题做了一些更新。我不够清楚,因为我正在更新别人已经制作的补丁,这就是为什么我想创建一个自定义补丁来存储在我的本地代码中,但是它使用了一个已经更新到Drupal的补丁,我把这个问题链接到了我不认为这有什么区别,尽管我只会应用一个自定义补丁,将第一个补丁和您的修改合并到一个文件中。问题仍然在于如何创建修补程序。您正在使用lazyloader模块的源文件吗?你是在lazyloader目录中运行“git diff…”吗?我想应用补丁,然后做我自己的更改,但只针对我的项目,没有将补丁上传到drupal,而是使用带有/patches/ladyloader/mypatch.patch的本地目录。我在项目git上进行更改,而应该在lazyloader中自己的git中进行更改吗?哪个是分支alpha-112134?好的,我明白你的意思,但我如何使之成为可能?它是否取决于我从何处创建修补程序?我应该从/modules/contrib/lazyloader创建它吗?composer.json中的路径取自何处?