2012-12-20 15 views
7

Ich bin in einer ziemlich sauren Gurke mit einem neuen Projekt und Symfony 2 Abhängigkeiten mit Composer.Komponist, Mindeststabilität und Abhängigkeiten von Abhängigkeiten

Zuerst einige Situation, ich installiere die symfony/framework-standard-edition v2.1.5 mit Composer. Dies ergibt eine Composer-Datei, die diese Anforderungen und keinen Mindest-Stabilitätsknoten aufweist.

"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" 
}, 

Dies funktioniert gut, es installiert die neuesten stabilen Versionen, so wie es soll.

Als nächstes füge ich ein Bündel ->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" 
}, 

Dieses Paket ist abhängig von "Lehre/Lehre-Leuchten-Bündel" in "dev-Master" (https://packagist.org/packages/doctrine/doctrine-fixtures-bundle)

Und das Bündel hängt auf Doktrin/Daten-Fixtures mit * (https://packagist.org/packages/doctrine/data-fixtures)

Jetzt, wenn ich Composer-Update im Projekt ausführen, sagt es mir, dass es nichts gibt, um die Abhängigkeit Doktrin/Daten-Fixtures zu erfüllen. Entweder ein Tippfehler im Namen oder keine "stabile" Version, da die Mindeststabilität standardmäßig stabil ist.

Es möchte das doctrine-fixtures-bundle in "dev" stability installieren, da dev-master diese Abhängigkeit automatisch in "dev" -Stabilität versetzt. Aber das tut nichts für die Deps dieser Dep, sie wollen immer so stabil installieren, da das meine minimale Stabilität ist.

An dieser Stelle kann ich das beheben, indem ich doctrine/data-fixtures: dev-master oder @dev zu meiner composer.json im Projekt hinzufüge.

Aber da dies nur ein Beispiel ist (knpmenubundle, fosuserbundle, etc etc) muss ich manuell gehen und alle Deps von Deps hinzufügen, die nicht in meine eigene Composer-Datei installieren. Eine andere Lösung wäre, die minimale Stabilität meines Projekts auf dev zu reduzieren, aber zu dieser Zeit werden alle meine Deps, einschließlich der stabilen wie Symfony2, ihre dev Version und nicht die getaggte Version installieren.

Antwort

13

Es gibt nur einen guten Ausweg: Leute quälen, damit sie mehr Releases markieren. Wenn Sie wirklich mit unstable Sachen arbeiten müssen, dann whitelisting alles mit erfordert "@dev" ist die beste Alternative IMO. Wenn Sie instabiler als stabil sind, können Sie immer @stable markieren und die minimale Stabilität auf dev setzen. Es gibt immer noch die Lock-Datei, um deinen Arsch in den meisten Fällen zu retten;)

Verwandte Themen