[英]Blocking a package install in PHP Composer to use a fork of the package
我正在與Behat和Composer合作開展一個項目。 我不得不為Mink和Mink Selenium 2驅動程序創建一個fork和patch來處理彈出窗口。 目前,管理我分配的回購的人仍在審核補丁。 所以在同一時間我想使用我的fork版本。
我已經將我的存儲庫添加到作曲家並且它們被拉入。但是“behat / mink”包仍在安裝,因為“behat / mink-extension”需要它。 問題是它也可以使用它的叉子。 所以我想讓它只用我的而不是“behat / mink”包。
我可以這樣做嗎? 我可以阻止包的必需包,而不是我的fork嗎?
謝謝!
是的,您需要做的就是將fork列為要使用的存儲庫,Composer將自動包含fork而不是原始包。 從文檔中
如果您正在為項目使用某個庫,並且決定更改庫中的某些內容,則需要您的項目使用修補版本。 如果庫在GitHub上(大多數時候都是這種情況),你可以簡單地將它分叉並將更改推送到fork。 之后,您更新項目的composer.json。 您所要做的就是將您的fork添加為存儲庫並更新版本約束以指向您的自定義分支。
有人修補Monolog的例子。 然后他們告訴Composer使用他們的存儲庫。
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/igorw/monolog"
}
],
"require": {
"monolog/monolog": "dev-bugfix"
}
}
Composer將掃描https://github.com/igorw/monolog
提供的所有版本,並優先使用Packagist上提供的Monolog版本。
您還可以告訴Composer使用本地目錄而不是HTTP地址。
"repositories": [
{
"type": "vcs",
"url": "/documents/project/igorw/monolog"
}
],
這允許您開發庫,在另一個項目中使用它並測試它,而無需在每次編輯和測試之間推送到Github。
你不能真正阻止它們。 您可以禁用從packagist.org獲取信息,但這會影響所有包。
你應該做的是添加behat / mink的別名。 請參閱composer別名的文檔 。
盡量避免使用分支別名,使用內聯別名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.