2016-07-15 11 views
1

Ich habe ein neues Symfony 3.1.2-Projekt erstellt, in dem ich mit der Entwicklung einiger neuer Bundles begonnen habe, die ich in Zukunft wiederverwenden möchte. So ist meine Verzeichnisstruktur wie folgt aus:Composer update my Bundles Abhängigkeiten

app/ 
bin/ 
src/ 
    AppBundle/ 
    MyVendorName/ 
     CoolBundle/ 
     Controller/ 
     composer.json 
     ...other files and folders... 
     AwesomeBundle/ 
     Controller/ 
     composer.json 
     ...other files and folders... 
test/ 
var/ 
web/ 
composer.json 
...other files... 

Beide CoolBundle und AwesomeBundle dependes auf Bibliotheken von Drittanbietern (definiert für jedes composer.json).

Nun, gibt es eine Möglichkeit, ich kann composer update auf dem Projekt aufrufen, und es wird auch die Abhängigkeiten meiner Bundles aktualisieren?

Antwort

1

Sie haben eine Lösung gefunden, die Composers Repositories verwendet.

Ich habe meine Bundles in einen neuen Ordner namens Bundles (willkürlich benannt) verschoben. Dies ist notwendig, da Symfony automatisch jedes Bündel im Ordner src automatisch lädt und ich weiß nicht, was passieren wird, wenn sie zweimal automatisch geladen werden (vielleicht kann jemand das klären). So ist die neue Ordnerstruktur ist

app/ 
bin/ 
src/ 
    AppBundle/ 
bundles/ 
    MyVendorName/ 
     CoolBundle/ 
     Controller/ 
     composer.json 
     ...other files and folders... 
     AwesomeBundle/ 
     Controller/ 
     composer.json 
     ...other files and folders... 
test/ 
var/ 
web/ 
composer.json 
...other files... 

Dann auf meiner App composer.json Datei (die an der Unterseite) Ich habe

..., 

"repositories": [ 
    { 
     "type": "path", 
     "url": "bundles/MyVendorName/*" 
    } 
], 
"require": { 
    "php": ">=5.5.9", 
    "symfony/symfony": "3.1.*", 
    "myvendorname/coolbundle": "@dev", 
    "myvendorname/awesomebundle": "@dev", 
}, 
... 

Nun, wenn ich composer update laufe sie fügt dieses Bündel (solange sie haben eine gültige composer.json Datei) in der vendor Ordner meines Projekts einschließlich ihrer Abhängigkeiten, und sie sind automatisch geladen.

Die lokalen Bundles werden unter Verwendung von Symlinks hinzugefügt, so dass alle Änderungen, die ich in den Bundles mache, direkt die App beeinflussen. Für weitere Informationen werfen Sie einen Blick auf composer's documentation.