2013-02-20 90 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