2012-12-20 133 views
7

我在一個新項目和Symfony 2依賴使用作曲家相當泡菜。作曲家,最小的穩定性和依賴的依賴關係

首先,我使用作曲家安裝symfony/framework-standard-edition v2.1.5。這產生了具有這些要求並且沒有最小穩定性節點的作曲家文件。

"require": { 
    "php": ">=5.3.3", 
    "symfony/symfony": "2.1.*", 
    "doctrine/orm": ">=2.2.3,<2.4-dev", 
    "doctrine/doctrine-bundle": "1.0.*", 
    "twig/extensions": "1.0.*@dev", 
    "symfony/assetic-bundle": "2.1.*", 
    "symfony/swiftmailer-bundle": "2.1.*", 
    "symfony/monolog-bundle": "2.1.*", 
    "sensio/distribution-bundle": "2.1.*", 
    "sensio/framework-extra-bundle": "2.1.*", 
    "sensio/generator-bundle": "2.1.*", 
    "jms/security-extra-bundle": "1.2.*", 
    "jms/di-extra-bundle": "1.1.*", 
    "kriswallsmith/assetic": "1.1.*@dev" 
}, 

這工作正常,它安裝所有最新的穩定版本,就像它應該。

接下來,我添加束 - >https://packagist.org/packages/kunstmaan/admin-bundle

"require": { 
    "php": ">=5.3.3", 
    "symfony/symfony": "2.1.*", 
    "doctrine/orm": ">=2.2.3,<2.4-dev", 
    "doctrine/doctrine-bundle": "1.0.*", 
    "twig/extensions": "1.0.*@dev", 
    "symfony/assetic-bundle": "2.1.*", 
    "symfony/swiftmailer-bundle": "2.1.*", 
    "symfony/monolog-bundle": "2.1.*", 
    "sensio/distribution-bundle": "2.1.*", 
    "sensio/framework-extra-bundle": "2.1.*", 
    "sensio/generator-bundle": "2.1.*", 
    "jms/security-extra-bundle": "1.2.*", 
    "jms/di-extra-bundle": "1.1.*", 
    "kriswallsmith/assetic": "1.1.*@dev", 
    "kunstmaan/admin-bundle": "dev-master" 
}, 

該捆綁在 「DEV-主」(https://packagist.org/packages/doctrine/doctrine-fixtures-bundle

取決於 「教義/學說-夾具束」 這束取決於(https://packagist.org/packages/doctrine/data-fixtures

現在,當我在項目中運行composer update時,它告訴我沒有任何東西可以滿足doctrine/data-fixtures的依賴關係。無論是名稱中的拼寫錯誤,還是沒有可用的「穩定」版本,因爲最小穩定性默認爲穩定。

它確實希望在「dev」穩定性中安裝doctrine-fixtures-bundle,因爲dev-master會自動將此依賴關係置於「dev」穩定性中。但是這對於這個dep的代價沒有任何影響,他們一直希望安裝穩定,因爲這是我的最低穩定性。

在這一點上,我可以通過在項目中添加doctrine/data-fixtures:dev-master或者@dev到我的composer.json來解決這個問題。

但是,因爲這只是一個例子(knpmenubundle,fosuserbundle等等),我將不得不手動去添加所有deps,不安裝到我自己的作曲文件。

另一種解決辦法下探我的項目到dev的最小穩定性,但當時我所有的DEPS,包括穩定的像Symfony2中,將安裝自己的開發版本,而不是標籤的釋放。

回答

13

只有一個良好的出路是:嘮叨的人,讓他們更多的標記釋放。如果你真的需要處理不穩定的東西,然後將它列入白名單,需要"@dev"是IMO的最佳選擇。如果你的穩定性比穩定性更差,那麼你總是可以標記@stable並將最小穩定性設置爲dev。在大多數情況下仍然有鎖文件來保存你的屁股;)