Composer.phar Symfony 清除缓存

5
每当我执行composer.phar install时,它会清除Symfony的dev缓存。
是否有一种方法可以清除其他环境的缓存,比如生产环境?我知道我可以随时运行app/console cache:clear --env=prod。但是在获取依赖项后,我希望Composer能处理这个问题。
2个回答

6
在您的composer.json文件中,您会找到一个名为“scripts”的部分,它应该类似于以下内容:
"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中是静态定义的。extra-section中定义的值(例如“symfony-web-dir”)是ScriptHandler使用的参数。它们可以从composer的CommandEvent中检索,如ScriptHandler::getOptions()所示。因此,您可以例如在“extra”中定义一个要在每次安装/更新时清除的环境数组,然后在您的脚本中检索它并为每个指定的环境调用清除缓存命令。在您的情况下,可能可以通过环境变量提供值,但是这将需要深入了解composer,因为配置没有解释如何覆盖extra-section中的值。

1

在查找如何在composer更新后设置资源符号链接选项时,我找到了这个答案。

您可以在composer.json文件的extra节点中添加“symfony-assets-install”条目来执行此操作。

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

来源:更新供应商


最好说明要添加哪个条目。 - Alsciende

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接