Wie verschiebe ich die Composer-Abhängigkeit von require-dev zu require?

8

Ich habe zwei Projekte auf meinem Git Repo Server. Die erste ist eine Bibliothek, die ich geschrieben habe, nennen wir sie foo/lib-bar . Die zweite ist eine Anwendung, die diese Bibliothek foo/app-bar verwendet. Derzeit befindet sich die Bibliothek in der Entwicklungsversion, daher sieht die composer.json -Datei der Bibliothek wie folgt aus:

%Vor%

Die Anwendung verwendet diese Bibliothek und enthält daher die erforderliche Anforderung:

%Vor%

Und alles ist glatt bis zu diesem Punkt: Sowohl composer install als auch composer update laufen wie erwartet, installieren die Abhängigkeit und ich kann sie in vendor/

sehen

Nun, die Dokumente sagt das

%Vor%

Und für die Schritte, die zu dem fraglichen Problem führen:

Also, meine Bibliothek ist bereit für den Einsatz und kommt aus der Entwicklungsphase. Es wird auch zufällig in der Produktionsversion meiner Anwendung benötigt. Ich entferne das Suffix dev aus der composer.json -Datei meiner library , übergebe und schiebe die Datei und bin bereit, die Anwendung zu aktualisieren.

Mit dem composer.json der Anwendung verschiebe ich die Bibliotheksabhängigkeit von require-dev Sektion nach require und entferne das dev Suffix (alles wird kopiert, also gibt es keinen Tippfehler - ich habe es noch einmal überprüft und noch einmal überprüft ):

%Vor%

Jetzt starte ich composer update und bekomme:

%Vor%

Ich nahm an, dass die neue Version nicht gefunden wurde, also löschte ich die alte Bibliothek manuell:

%Vor%

und versuchte es von Grund auf neu zu installieren

%Vor%

Aber dieses Mal gibt es mir:

%Vor%

Es scheint also so zu sein, dass require-dev funktioniert, aber require nicht . Irgendwelche Vorschläge, was hier schief gegangen sein könnte?

    
Maciej Sz 19.01.2014, 20:37
quelle

1 Antwort

1

require-dev ist nicht der Ort, um Abhängigkeiten zu entwickeln. Es ist für Software gedacht, die nur in der Entwicklung verwendet wird, wie PHPUnit, Mockery usw., oder für Abhängigkeiten, die für sich selbst nützlich sind, aber in diesem Fall nur für die Entwicklung verwendet werden, wie die Client-Bibliothek für den Service eines Softwarepakets ( um in einem Testszenario einige echte Anfragen zu stellen.)

Also sollte Ihre Bibliothek nicht von Anfang an "require-dev" gewesen sein.

Eine andere Sache ist: Composer zieht die Version ab, wenn entsprechende Zweige und Tags verwendet , dh ein Zweig namens "1.0.x" in Ihrem Repository wird als Entwicklungszweig für alle 1.0-Versionen erkannt und alle Anforderungen für solche Versionen könnten möglicherweise von diesem Zweig erfüllt werden - vorausgesetzt, Sie erlauben Entwicklungsversionen entweder durch Setzen von "minimum-stability": "dev" (was Entwicklungsversionen für ALLE Software erlauben würde - eher unbeabsichtigt) oder wenn Sie die Version "1.0.0@dev" benötigen Ihre Software.

Die einzige Sache, die Ihr Composer-Setup derzeit unterbrechen könnte, ist, dass Sie explizit eine Version in der Bibliothek composer.json erwähnen, und dies ist eine Entwicklungsversion. Hast du diesen Versionshinweis entfernt? Sie sollten es entfernen, da das Leben leichter ist, wenn Composer die Versionen von den Tags in einem Repository erkennen kann, nicht indem sie in composer.json explizit erwähnt werden.

Stellen Sie abschließend sicher, dass Sie bei der Verwendung von Git das mit der entsprechenden Version markieren. Die require d-Version sollte der git-markierten Version entsprechen.

    
Sven 20.01.2014, 00:50
quelle

Tags und Links