Composer.phar Symfony清除缓存

时间:2013-02-20 18:32:32

标签: symfony

每当我执行composer.phar安装时,它都会清除Symfony的开发缓存。

有没有什么方法可以说清楚另一个环境缓存,比如生产?我知道我总是可以运行app / console cache:clear --env = prod。但是我希望Composer在抓住依赖项之后处理它。

2 个答案:

答案 0 :(得分: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使用的参数。可以从作曲家的CommandEvent中检索它们,如ScriptHandler::getOptions()中所示。因此,您可以在"extra"中定义要在每次安装/更新时清除的环境数组,在脚本中检索它,然后为每个指定的环境调用clear cache-command。有可能通过environment variables提供值,这可能在你的场景中更有意义,但这需要深入到作曲家,因为配置没有解释如何覆盖额外部分中的值。

答案 1 :(得分:1)

我在寻找如何在作曲家更新后设置资产符号链接选项时找到了这个答案。

您可以在composer.json文件的额外节点中添加“symfony-assets-install”条目

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

src:Updating Vendors