2017-04-21 61 views
2

TL; DR:

我的項目需要庫A,A需要B1。 B1壞了,但有一個叉子B2。 我想達到的作曲家將安裝B2而不是B1,即使A需要B1而不是B2。作曲家:如何覆蓋composer.json的全球需求?

如何做到這一點?

更詳細:

在我們需要以下庫symfony項目:

"require": { 
    "emanueleminotto/twig-cache-bundle": "1.0.2", 
} 

這個庫requires itself另一個庫當前破:

"require": { 
    "asm89/twig-cache-extension": "^1.3" 
}, 

對於破庫已經存在一個pull request超過4個月,但維護者拒絕合併它。

我的問題是,如果有可能覆蓋子依賴關係的依賴關係,那麼總是會使用修補的叉子而不是原來的那個?

對於asm89 /枝緩存擴展存在與修復下列叉:https://github.com/blackandred/twig-cache-extension

我想這個叉添加到我的composer.json並明確在「庫」中註冊的叉:

"repositories": [ 
    { 
     "type": "git", 
     "url": "https://github.com/blackandred/twig-cache-extension" 
    } 
], 

,並添加了依賴性也是我作曲,JSON用更改後的版本爲「DEV-大師」:

"require": { 
    "asm89/twig-cache-extension": "dev-master", 
    "emanueleminotto/twig-cache-bundle": "1.0.2", 
} 

但由於emanueleminotto/twig-cache-bundle仍然需要原始庫,作曲家忽略叉並安裝原件。

我可以在這裏做什麼?

回答

3

相信文檔有此方案good example

基本上你需要在你的composer.json定義別名如下:

"require": { 
    "asm89/twig-cache-extension": "dev-master as 1.3", 
    "emanueleminotto/twig-cache-bundle": "1.0.2", 
} 

通過提問補充:

一步還缺:"composer update asm89/twig-cache-extension"

2

添加replace節到您的叉composer.json

{ 
    "replace": { 
     "asm89/twig-cache-extension": "self.version" 
    } 
}