2016-05-17 4 views
0

ich die folgende Einstellung erreichen wollen (ich habe andere Abhängigkeiten und Sachen aus Gründen der Übersichtlichkeit weggelassen):Kann ein Komponist „Master“ Paket Pull in dev-Master-Pakete ohne Mindeststabilität zu modifizieren

Project composer.json

{ 
    "require": { 
     "vendor/masterpackage": "*" 
    } 
} 

Meister composer.json

{ 
    "require": { 
     "vendor/package-1": "dev-master", 
     "vendor/package-2": "dev-master" 
    } 
} 
Paket

Das Master-Paket wird mit Releases versioniert, untergeordnete Pakete nicht, daher die Dev-Master-Anforderung.

Da minimum-stability kann nur im Wurzel composer.json eingestellt werden und auf alle Abhängigkeiten angewendet wird (was in meinem Fall unerwünscht ist), ist es möglich, eine dev -Stabilität Flag für nur Umkarton zu setzen und seinen eigene Abhängigkeiten, damit die untergeordneten Pakete korrekt installiert werden? Ich habe bereits versucht "vendor/masterpackage": "*@dev" aber ohne Erfolg ...

Antwort

0

Ich habe einen Weg gefunden, das funktioniert und dachte, es wäre von Vorteil, es als eine Antwort für zukünftige Referenz zu veröffentlichen.

Project composer.json

{ 
    "require": { 
     "wikimedia/composer-merge-plugin": "dev-master", 
     "vendorname/masterpackage": "*" 
    }, 
    "merge-plugin": { 
     "require": [ 
      "vendor/vendorname/masterpackage/dev-composer.json" 
     ] 
    } 
} 

dev-composer.json Master-Paket

{ 
    "require": { 
     "vendorname/package-1": "[email protected]", 
     "vendorname/package-2": "[email protected]" 
    } 
} 

Die Merge-Plugin diese Arbeit macht, da es Abhängigkeiten von bestimmten JSON-Dateien, als ob sie behandelt sind in der Wurzel composer.json

0

Die Art, wie Sie damit experimentieren, wird es nicht funktionieren.

Abhängigkeiten von abhängigen Paketen können nicht direkt beeinflusst werden. Wenn also Ihr Projekt Entwicklungspakete verbietet, haben Sie kein Glück.

Sie können diese indirekten Pakete in Ihre Projekte composer.json hinzufügen, indem Sie sie mit den notwendigen @dev oder dev-X Umgebungen hinzufügen. Auf diese Weise wird das System direkt benötigt, um die Entwicklungsstabilität zu gewährleisten, und die Anforderung an das Master-Paket wird ebenfalls erfüllt.

Aber seien Sie gewarnt, dass abhängig von Zweigen ist eine sehr sehr schlechte Angewohnheit und macht Ihre Abhängigkeiten sehr spröde. Die Commit-ID, die verwendet wurde, wird aufgezeichnet, aber wenn sie einmal aktualisiert wurde und es schief geht, wird es Ihnen schwer fallen, alle sich bewegenden Teile zu jonglieren, d. H. Alle Repositories, die nur eine Verzweigung bereitstellen.