您在這裡

D8筆記:如何使用Composer來安裝各式Patch

前言

由於使用Composer Template的方式進行D8的開發,所有的核心、官方模組、全部都不會被git到Repo裡面。因此,Patch的更新方式,有所變化。當然,若是使用原生D8進行開發,並且與D7一樣使用Drush來下載安裝模組,並且都將全部code Commit進去的作法,Patch的使用方式也就比照原來的作法,以下就可以直接跳過囉。

在composer.json中加入patch

由於在D8中,composer.json裡面會描述者全部使用到的核心、模組、Libraries還有一堆相依套件。當然,Patch也是直接在composer.json裡面直接加入囉,請參考下面語法。

例如,我這裡為了要解決D8每次在FRA與更新模組的時候產生的錯誤訊息,所以,只需要在Composer.json裡面的Extra區域,加入patches,詳細的寫法,請參考下面範例。

"extra": {
        "installer-paths": {
            "web/core": ["type:drupal-core"],
            "web/libraries/{$name}": ["type:drupal-library"],
            "web/modules/contrib/{$name}": ["type:drupal-module"],
            "web/profiles/contrib/{$name}": ["type:drupal-profile"],
            "web/themes/contrib/{$name}": ["type:drupal-theme"],
            "drush/contrib/{$name}": ["type:drupal-drush"]
        },
        "patches": {
            "drupal/core": {
                "Adding a new batch set while the batch is running breaks batch order": "https://www.drupal.org/files/issues/2664016-41.patch"     
            }
        }

安裝Patch

當已經將patch加入了composer.json之後,只需要進行安裝即可將這個patch安裝到對應指定的地方

安裝方式如下:

$ composer install

只要下完上面指令,恭喜您,就已經完成了patch的安裝了。

結論

個人覺得,從D7的Patch的安裝方式,一直以來沒有一個很好的統整方法,也許之前使用了某個Patch,而時間一久,也許就忘記了。也有可能是同時多人一起開發網站的時候,往往只有當事人知道用了什麼Patch,其他工程師是不太清楚Patch的狀況的。而到了D8,再加上Composer Template的特殊資料夾配置,不僅讓D8網站的Code更加精簡,還可以在Composer.json檔案裡面,一目了然全部的模組,與對應用到的Patch,是個非常好用的方法。大推大推:)