2014-04-15 4 views
13

Ich verstehe nicht wirklich, wie Composer mit der Einstellung für minimale Stabilität arbeitet.Das Paket ist nicht in einer stabilen Version verfügbar, die Ihrer minimalen Stabilität entspricht

Ich habe zwei Pakete. Nehmen wir an, PackageA und PackageB.

Die composer.json Datei von PackageA sieht wie folgt aus:

{ 
    "name": "vendor/packagea", 
    "minimum-stability": "dev", 
    "require": { 
     "vendor/packageb": "dev" 
    } 
} 

So PackageA erfordert PackageB. Die json von PackageB sieht wie folgt aus:

{ 
    "name": "vendor/packageb", 
    "minimum-stability": "dev" 
} 

So sagen beide Mindest Stabilität sind dev. Also ich nehme an, wenn ich das tue:

composer create-project vendor/packagea 

Aber dann ist es mit der Meldung klagt:

[InvalidArgumentException] 
Could not find package vendor/packagea with stability stable. 

Was ich seltsam finde, weil ich davon ausgehen würde, dass die minimale Stabilität dev Einstellung würde das Paket ziehen von seiner "Entwicklungs" -Zweig. Was bei github immer dev-master ist. So

Ich habe versucht, es zu installieren, von dem Komponisten zu sagen, was Zweig zu verwenden:

composer create-project vendor/packagea testFolder dev-master 

Aber dann klagt er, dass es nicht PackageB finden:

Installing dependencies (including require-dev) 
Your requirements could not be resolved to an installable set of packages. 

    Problem 1 
    - The requested package vendor/packageb dev could not be found. 

Dann, wie bin ich in der Lage mein Paket installieren? Ich bin noch in der Entwicklung so möchte ich nicht noch eine Freigabe für PackageA und Paket B schaffen ...

Antwort

13

Es gibt zwei Probleme:

In create-Projekt wird standardmäßig verwendet der Befehl die stabile Stabilität zu suchen das zu installierende Paket, deshalb funktioniert es, wenn Sie dev-master angeben, aber nicht standardmäßig. Sie könnten aber auch laufen composer create-project vendor/packagea -s dev

Nachdem während der Installation von Abhängigkeiten, vermute ich, dass Ihr Paket nicht in einer Version namens existiert nur dev, so dass er sie nicht finden kann, wenn man es so erfordern. Requiring dev-Master würde wahrscheinlich funktionieren, wie:

{ 
    "name": "vendor/packagea", 
    "minimum-stability": "dev", 
    "require": { 
     "vendor/packageb": "dev-master" 
    } 
} 
+0

Die Änderung von 'require' zu' dev-master' funktioniert in der Tat. Außerdem muss es mit der Option "dev-master" installiert werden. Aber es scheint mir immer noch seltsam. Loos wie "dev" ist völlig nutzlos, da es wirklich nichts für mich tut. – Vivendi

+0

Das Anfordern von '* @ dev' zum Beispiel wäre eine gültige Versionsbeschränkung, die dev-Versionen zulässt, aber dev allein bedeutet, dass es versucht, eine exakte Übereinstimmung für eine so genannte Version zu finden, die nicht existiert. – Seldaek

+0

funktioniert nicht mit Composer 1.0-dev 2015-07-21: 'Ungültige Stabilität vorausgesetzt (= dev) muss eine der folgenden sein: stabil, RC, beta, alpha, dev muss -sdev: ' composer create-project sein Vendor/packagea -sdev' – dave

0

Wie habe ich das behoben?

Nach Composer installieren, führen Sie den folgenden Befehl, um den Composer Asset-Plugin zu installieren:

php composer.phar global require "fxp/composer-asset-plugin:^1.2.0" 

nun eine der Anwendungsvorlagen Installation Yü 2.0 starten wählen. Eine Anwendungsvorlage ist ein Paket, das ein Gerüst der in Yii geschriebenen Webanwendung enthält.