5

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

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

4

2 回答 2

6

在您的 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。可以通过环境变量提供值这在您的场景中可能更有意义,但这需要深入研究作曲家,因为配置没有解释例如如何覆盖额外部分中的值。

于 2013-02-20T19:07:41.267 回答
1

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

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

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

src:更新供应商

于 2014-03-28T15:48:07.603 回答