可通过配置composer.json中的post-update-cmd脚本在更新后自动清理旧缓存,如执行rm -rf cache/*并提示完成;2. 支持结合环境变量判断仅在生产环境清理;3. 也可调用php脚本实现更复杂的清理逻辑;4. 还可手动或在部署时运行composer clear-cache清理Composer自身缓存。

Composer 更新后自动清理旧缓存文件,可以通过配置 Composer 的钩子(scripts)来实现。Composer 提供了丰富的脚本事件,可以在特定操作完成后执行自定义命令,比如 post-update-cmd 事件非常适合用来清理缓存。
1. 使用 post-update-cmd 脚本
在项目的 composer.json 文件中添加 scripts 配置,指定更新完成后要执行的清理命令:
{ "scripts": { "post-update-cmd": [ "rm -rf cache/*", "echo '旧缓存已清理'" ] } }
上面的例子会在每次运行 composer update 后自动删除 cache/ 目录下的所有文件。你可以根据项目实际路径调整目录名,比如 storage/cache/ 或 var/cache/ 等。
2. 针对不同环境做判断
如果你只想在生产环境清理缓存,可以写一个简单的检查脚本:
{ "scripts": { "post-update-cmd": [ "if [ "$app_ENV" = "production" ]; then rm -rf cache/*; fi" ] } }
3. 使用 PHP 脚本进行更复杂的清理
如果需要更精细的控制,比如只清理过期文件或记录日志,可以调用自定义 PHP 脚本:
{ "scripts": { "post-update-cmd": [ "php bin/clear-cache.php" ] } }
创建 bin/clear-cache.php 文件,编写你的清理逻辑,例如遍历目录、按时间删除、跳过某些文件等。
4. 清理 Composer 自身的缓存(可选)
如果你还希望释放磁盘空间,可以定期清理 Composer 全局缓存:
composer clear-cache
这个命令不会自动执行,但可以手动运行或加入部署流程中。
基本上就这些。通过合理使用 Composer 的 scripts 功能,就能在更新后自动完成缓存清理,减少人为遗漏,提升部署稳定性。


