php – Composer – 從 GitHub (VCS) 的 Repository 讀取套件

有個狀況是這樣:我們在 GitHub 修改了第三方套件,也 Pull Request 給作者,但作者還沒有 Merge 回去。這時候我們專案又要使用該怎麼辦?

解決方式:

改用自己的 GitHub Repository 即可。

舉例流程,以下示範修改第三方套件 php-simple-html-dom-parser

  • 我們從來源 sunra/php-simple-html-dom-parser fork 一份到自己的 repository 如 fdjkgh580/php-simple-html-dom-parser
  • 在自己的 repository fdjkgh580/php-simple-html-dom-parser 開一個分支命名為 update-php7.4
  • 開始修改程式碼並提交到該分支 update-php7.4
  • 在 composer.json 改寫。這裡要注意,repository 指定我們 fork 過來的位置;require 改為我們自訂的分支名稱,官方提到會成為這種格式 dev-* 因此要寫成 dev-update-php7.4,但套件名稱不要更改
{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/fdjkgh580/php-simple-html-dom-parser.git"
        }
    ],
    "require": {
        "sunra/php-simple-html-dom-parser": "dev-update-php7.4"
    }
}
  • 沒有裝過就 composer install ;已經裝過原本第三方來源,就用 composer update 換成自己的 repository。

上面發生什麼事?

套件 sunra/php-simple-html-dom-parser 本來應該要從第三方來源 sunra/php-simple-html-dom-parser 下載,經過 composer.json 替換後,安裝或更新時,會先檢查是否在 composer.json 定義過 repository。那因為我們定義過了,因此 composer 將原本應該要連去 sunra 的 repository 改成 fdjkgh580 的 repository。

參考官方文件:https://getcomposer.org/doc/05-repositories.md#vcs

發表迴響