2013-02-20 15 views
5

Immer wenn ich composer.phar installiere, lösche ich den Dev-Cache von Symfony.Composer.phar Symfony Cache löschen

Gibt es eine Möglichkeit, einen Cache für andere Umgebungen zu erstellen, wie etwa die Produktion? Ich weiß, dass ich den App/Konsolen-Cache immer ausführen kann: clear --env = prod. Aber ich würde gerne, dass Composer das nach dem Ergreifen der Abhängigkeiten handhaben würde.

Antwort

5

In Ihrem composer.json finden Sie einen Abschnitt „Skripte“ finden, die wie folgt aussehen sollte:

"scripts": { 
    "post-install-cmd": [ 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" 
    ], 
    "post-update-cmd": [ 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" 
    ] 
} 

Wie Sie alle Befehle in einer einzigen Datei gespeichert werden sehen können, ist Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache() was du bist Auf der Suche nach.

Da diese Skripts ohne Benutzereingriff ausgeführt werden sollen, sollen keine Argumente hinzugefügt werden. Sie können jedoch problemlos eigene Skripts hinzufügen oder vorhandene ersetzen.

bearbeiten: Der letzte Absatz sollte ich umformulieren. Sie können Argumente haben, die jedoch in Ihrer Datei composer.json statisch definiert sind. Die im Extra-Abschnitt definierten Werte, z.B. "symfony-web-dir" sind Argumente, die vom ScriptHandler verwendet werden. Sie können aus CommandEvent des Komponisten abgerufen werden, wie in ScriptHandler::getOptions() zu sehen ist. So könnten Sie zum Beispiel ein Array von Umgebungen definieren, die bei jeder Installation/Aktualisierung in "extra" gelöscht werden sollen, in Ihrem Skript abrufen und dann den Clear Cache-Befehl für jede angegebene Umgebung aufrufen. Es könnte möglich sein, die Werte über environment variables bereitzustellen, was in Ihrem Szenario wahrscheinlich sinnvoller ist, aber dies erfordert ein Eingehen auf Composer, da die Konfiguration nicht erklärt, wie beispielsweise Werte in dem Extra-Abschnitt überschrieben werden.

1

Ich fand diese Antwort bei der Suche nach der Assets Symlink Option nach einem Composer-Update festlegen.

Sie können es eine "symfony-Assets-install" Eintrag in dem zusätzlichen Knoten Ihrer composer.json Datei

"extra": { 
    "symfony-app-dir": "app", 
    "symfony-web-dir": "web", 
    "symfony-assets-install": "symlink" 
} 

src tun Zugabe: Updating Vendors

+0

Es wäre nützlich gewesen zu sagen, welcher Eintrag hinzufügen. – Alsciende

+1

aktualisiert, um welche zu sagen – Axi