九月 14, 2017 | 後端和Drupal
D8筆記:如何使用Composer來安裝各式Patch
由於使用Composer Template的方式進行D8的開發,所有的核心、官方模組、全部都不會被git到Repo裡面。因此,Patch的更新方式,有所變化。當然,若是使用原生D8進行開發,並且與D7一樣使用Drush來下載安裝模組,並且都將全部code Commit進去的作法,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,是個非常好用的方法。大推大推:)