2013-07-08 291 views
3

我正在與Behat和Composer一起工作。我必須爲Mink和Mink Selenium 2驅動程序創建一個叉子和補丁來處理彈出窗口。目前這些補丁正在由那些管理我所分配的回購版的人員進行審查。所以同時我想使用我的fork版本。在PHP Composer中封裝軟件包安裝以使用軟件包的分支

我已將我的存儲庫添加到作曲家,並且他們被拉入。但是「behat/mink」包仍在安裝中,因爲「behat/mink-extension」需要它。問題是它也可以使用我的分支。所以我想讓它只拉我的,而不是「behat/mink」包。

我可以這樣做嗎?我可以用我的叉子擋住包裹所需的包裹嗎?

謝謝!

回答

8

是的,你需要做的就是列出你的叉子作爲存儲庫來使用,Composer會自動包含叉子而不是原始包裝。 From the documentation

如果你正在使用你的項目一定的圖書館,你決定 改變的東西在圖書館,你會希望你的項目使用 修補版本。如果該庫位於GitHub上(此時大多數情況下爲 ),則可以簡單地將其分叉,然後將更改推送到您的分支。之後,您更新項目的composer.json。您所有的 要做的就是將您的分叉添加爲存儲庫並更新版本 約束以指向您的自定義分支。

一個例子,其中有人修補了Monolog。然後他們告訴Composer使用他們的存儲庫。

{ 
    "repositories": [ 
     { 
      "type": "vcs", 
      "url": "https://github.com/igorw/monolog" 
     } 
    ], 
    "require": { 
     "monolog/monolog": "dev-bugfix" 
    } 
} 

作曲家將掃描所有可用的版本中https://github.com/igorw/monolog並使用它們優先於版本獨白的可在Packagist。

您還可以告訴Composer使用本地目錄而不是HTTP地址。

"repositories": [ 
     { 
      "type": "vcs", 
      "url": "/documents/project/igorw/monolog" 
     } 
    ], 

這允許您開發庫,在另一個項目中使用它並測試它,而不必在每次編輯和測試之間推送到Github。

+0

當我最初閱讀本文檔時,遇到了以下問題。但看完這篇文章後:http://en.mnapoli.fr/overriding-dependencies-with-composer/我終於明白了。 – pthurmond

1

你不能阻止他們。您可以禁用從packagist.org獲取信息,但這會影響所有包。

你應該做的是爲behat/mink添加一個別名。請參閱the documentation of composer aliases

儘量避免使用分支別名,使用內聯別名。