Composer Scripts 是 composer.json 中用于绑定命令到特定事件的功能,支持 post-install-cmd、post-update-cmd 等生命周期钩子,也可定义 clear-cache、dev-setup 等自定义脚本;通过 “scripts” 字段配置,可运行 shell 命令或调用 PHP 类方法,结合 autoload.files 加载脚本类,实现复杂逻辑;使用 composer run 脚本名执行,提升项目自动化与可维护性。

在使用 Composer 管理 PHP 项目时,scripts 是一个非常实用的功能,允许你在特定生命周期执行自定义命令,比如安装依赖后自动运行代码检查或清理缓存。通过自定义脚本,你可以简化开发流程、自动化任务。
什么是 Composer Scripts
Composer 支持在 composer.json 中定义 scripts 字段,用于绑定命令到特定事件。这些事件包括 post-install-cmd、pre-update-dump、post-autoload-dump 等。你也可以创建完全自定义的脚本名称,供手动调用。
如何定义自定义脚本
打开项目的 composer.json 文件,在根级别添加或修改 “scripts” 字段:
{ "scripts": { "post-install-cmd": [ "echo '依赖已安装!'" ], "post-update-cmd": [ "echo '依赖已更新!'" ], "clear-cache": [ "php clear-cache.php" ], "dev-setup": [ "composer install", "php generate-config.php", "echo '开发环境准备完成'" ] }}
上面例子中:
post-install-cmd:composer install 执行后触发 clear-cache:自定义脚本,可通过 composer run clear-cache 调用 dev-setup:组合多个命令,一键初始化开发环境
支持的常用事件钩子
Composer 内置多种事件,可用于监听操作流程:
pre-install-cmd:install 前执行 post-install-cmd:install 后执行 pre-update-cmd:update 前执行 post-update-cmd:update 后执行 post-autoload-dump:生成自动加载文件后执行(常用于刷新框架缓存) post-create-project-cmd:项目创建完成后执行(如用 create-project 创建项目)
例如 Laravel 就会在这个钩子中生成密钥:
"post-create-project-cmd": [ "php artisan key:generate"]
编写可复用的 PHP 类处理脚本
对于复杂逻辑,可以编写 PHP 类来处理脚本,而不是直接写 shell 命令。
先定义类:
<?php// scripts/BuildScript.phpclass BuildScript{ public static function build($event) { echo "开始构建项目...n"; // 可读取 $event 获取参数或 IO 对象 file_put_contents('build.lock', date('Y-m-d H:i:s')); echo "构建完成,时间已记录。n"; }}
然后在 composer.json 中注册:
"scripts": { "build": "BuildScript::build"}
确保该文件能被自动加载,可通过 files 加载:
"autoload": { "files": ["scripts/BuildScript.php"]}
运行命令:
composer run build
如何运行自定义脚本
使用 composer run 命令加脚本名即可:
composer run clear-cache
composer run dev-setup
composer run build
也可以加上 –verbose 参数查看详细输出。
基本上就这些。合理使用 Composer scripts 能极大提升项目自动化程度,减少重复操作。注意避免在脚本中写入阻塞性或危险命令,尤其在共享项目中要确保可移植性。
以上就是composer scripts脚本如何自定义和使用的详细内容,更多请关注php中文网其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/140059.html
微信扫一扫
支付宝扫一扫