composer install 时 scripts 执行顺序为:pre-install-cmd → post-install-cmd → pre-autoload-dump → post-autoload-dump,期间按需触发包级事件 pre/post-package-install,具体顺序受插件和参数影响。

Composer 的 scripts 事件在项目生命周期的不同阶段触发,执行顺序取决于你运行的命令。以最常见的 composer install 为例,下面是 scripts 事件的标准执行顺序:
1. pre-install-cmd
在安装开始前执行,可用于备份、检查环境等准备工作。2. post-install-cmd
在依赖包安装完成后执行,常用于生成 autoload 文件、清除缓存或执行项目初始化脚本。3. pre-update-cmd
如果使用了update 命令,在更新操作前触发,适合做版本控制或通知。
4. post-update-cmd
更新完成后执行,通常用于刷新配置、重建缓存或通知系统变更。5. pre-autoload-dump
在自动加载文件生成前运行,可用来清理旧的类映射或准备命名空间。6. post-autoload-dump
自动加载生成后执行,Laravel 等框架会在此触发优化处理(如生成 classmap)。7. pre-package-install
每个新包安装前触发一次,可用于记录或拦截特定包的安装。8. post-package-install
每个包安装完成后执行,适合对特定包进行配置或打补丁。9. pre-package-update
每个包更新前触发。10. post-package-update
每个包更新后执行,常用于处理版本升级带来的兼容性调整。11. pre-package-uninstall
删除包之前触发。12. post-package-uninstall
包已从磁盘移除后执行,可用于清理相关资源。注意:并不是所有事件都会在每次命令中被触发。比如 composer install 不会触发 update 相关事件,而 composer dump-autoload 主要触发 autoloading 相关事件。
实际顺序还可能受以下因素影响:
- 是否启用了插件(plugins),某些插件会注册自己的监听器并影响流程
- 脚本中是否调用了其他 Composer 命令
- 使用了
--no-scripts参数则所有 scripts 都不会执行
基本上就这些,理解事件顺序有助于合理安排自动化任务,避免在错误时机执行关键操作。










