pre-install-cmd和post-install-cmd是Composer在安装依赖前后触发的事件钩子,用于执行自动化脚本。通过在composer.json的scripts字段中配置,可定义安装前的环境检查、备份操作,以及安装后的配置生成、缓存清除等任务。例如:pre-install-cmd可输出提示或验证PHP环境,post-install-cmd可运行php artisan optimize或chmod命令。类似事件还包括pre/post-update-cmd、post-autoload-dump等,广泛用于Laravel等项目初始化与部署流程,提升自动化效率。

在使用 Composer 安装或更新 PHP 项目的依赖时,你可能会看到 pre-install-cmd 和 post-install-cmd 这样的提示。它们是 Composer 提供的事件钩子(Event Hooks),允许你在特定操作前后自动执行自定义脚本。
什么是 pre-install-cmd 和 post-install-cmd?
pre-install-cmd 是在 composer install 命令执行前触发的事件,而 post-install-cmd 是在安装过程完全结束后触发的事件。这两个事件让你可以在依赖安装前后运行一些辅助操作,比如生成配置文件、清除缓存、执行数据库迁移等。
这类事件属于 Composer 的脚本系统,通过在 composer.json 文件中配置 scripts 字段来定义具体行为。
如何配置这些事件?
打开项目根目录下的 composer.json 文件,在 scripts 部分添加对应事件:
{
"scripts": {
"pre-install-cmd": [
"echo '准备开始安装依赖...'"
],
"post-install-cmd": [
"php generate-config.php",
"chmod -R 755 var/cache"
]
}
}
上面的例子中:
- 执行
composer install前会输出提示信息; - 安装完成后会运行 PHP 脚本生成配置,并修改缓存目录权限。
你可以将命令写成字符串或数组形式,Composer 会按顺序执行每个条目。
常见用途和实用场景
这些事件钩子特别适合自动化部署或开发环境初始化任务:
- pre-install-cmd:可用于备份当前环境、检查 PHP 版本或扩展是否满足要求;
- post-install-cmd:常用于生成环境配置、刷新应用缓存、执行资产编译(如 Webpack)或通知部署完成。
例如,在 Laravel 项目中,虽然主要使用 Artisan 命令,但你仍可在 post-install-cmd 中自动执行:
这能确保每次依赖更新后应用处于最优状态。
其他相关事件
除了 install 相关事件,Composer 还支持多种钩子:
-
pre-update-cmd / post-update-cmd:在执行
composer update前后触发; - post-autoload-dump:自动加载文件重建后执行,适合刷新框架反射数据;
- post-root-package-install:项目初始包安装后触发,常用于骨架项目初始化。
合理利用这些事件,可以显著提升项目的自动化程度和部署效率。
基本上就这些。掌握 pre 和 post 类事件的使用,能让 Composer 不只是个依赖管理工具,更成为项目流程控制的一部分。不复杂但容易忽略。










