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。