2013-02-20 120 views
5

每當我執行composer.phar時,它都會清除Symfony的dev緩存。Composer.phar Symfony清除緩存

有沒有什麼辦法可以讓我們清楚其他環境緩存,如說生產?我知道我總是可以運行app/console緩存:clear --env = prod。但是我希望作曲家在抓取依賴關係後處理它。

回答

5

在你composer.json,你會發現一節「腳本」,它應該是這個樣子:

"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" 
    ] 
} 

正如你可以看到所有的命令都存儲在一個文件中,Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache()是你是什麼尋找。

由於這些腳本的目的是在沒有用戶干預的情況下運行,因此您不打算添加參數。但是,您可以輕鬆添加自己的腳本或替換現有的腳本。

編輯:我應該改寫的最後一段。你可以有參數,但是它們是在你的composer.json中靜態定義的。附加部分中定義的值,例如「symfony-web-dir」是ScriptHandler使用的參數。從ScriptHandler::getOptions()可以看出,它們可以從作曲家的CommandEvent中獲取。例如,您可以在"extra"的每個安裝/更新中定義要清除的環境陣列,在您的腳本中檢索它,然後針對每個指定的環境調用clear cache-command。有可能通過environment variables提供這些值,這可能在你的場景中更有意義,但是這將需要挖掘到composer,因爲配置不能解釋如何在extra-section中覆蓋值。

1

我在找到如何在作曲家更新後設置資產符號鏈接選項時找到了此答案。

你可以做到這一點增加了「symfony的資產安裝」在您的composer.json文件

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

SRC的額外節點條目:Updating Vendors

+0

這本來是有用的說哪個條目加上。 – Alsciende 2015-04-15 09:22:00

+1

更新說明哪一個 – Axi 2015-04-16 09:34:19