scripts是composer.json中用于定义自动化脚本的字段,支持在安装、更新等事件触发时执行命令或PHP方法,可用于初始化项目、清空缓存等任务。

Composer 的 scripts 功能允许你在执行 Composer 命令时自动运行自定义脚本,比如在安装、更新、卸载包时触发某些操作。它非常适用于自动化项目初始化、测试运行、代码检查、清理缓存等任务。
scripts 是什么?
在 composer.json 文件中,scripts 是一个可选的字段,用于定义一系列命名的脚本(可以是 PHP 脚本、命令行指令或类方法)。这些脚本会在特定事件发生时被触发,也可以通过
composer run [script-name]
手动执行。
常见事件钩子(Event Hooks)
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
创建项目后运行(常用于初始化配置)
如何定义脚本?
你可以在
composer.json
的 scripts 字段中添加脚本。支持三种形式:
1. 直接写 shell 命令
“scripts”: { “post-update-cmd”: “php artisan clear-compiled”, “post-install-cmd”: “echo ‘Installation finished.'”}
2. 执行多个命令(数组形式)
“scripts”: { “post-update-cmd”: [ “php artisan config:clear”, “php artisan route:clear”, “php artisan view:clear” ]}
3. 调用 PHP 类的静态方法(推荐用于复杂逻辑)
如知AI笔记
如知笔记——支持markdown的在线笔记,支持ai智能写作、AI搜索,支持DeepseekR1满血大模型
27 查看详情
“scripts”: { “post-create-project-cmd”: [ “MyProjectInstaller::postCreateProject” ]}
对应的 PHP 类需要能被自动加载(通常放在
src/
或指定的命名空间目录),例如:
namespace MyProject;class Installer{ public static function postCreateProject($event) { $composer = $event->getComposer(); // 自定义初始化逻辑 echo “Project initialized successfully!”; }}
手动运行脚本
你可以通过
composer run
来运行自定义脚本:
composer run my-script
前提是已经定义了名为
my-script
的脚本:
“scripts”: { “my-script”: “echo ‘Hello from custom script!'”}
实用场景示例
Laravel 项目清空缓存
“scripts”: { “post-update-cmd”: [ “IlluminateFoundationComposerScripts::postUpdate”, “@php artisan config:cache”, “@php artisan route:cache” ], “post-autoload-dump”: [ “php artisan event:clear” ]}
初始化项目配置
“scripts”: { “post-create-project-cmd”: [ “php bin/init.php” ]}
比如
bin/init.php
可以复制 .env 文件、生成密钥、提示用户下一步操作等。
基本上就这些。合理使用 scripts 能显著提升开发效率和项目自动化程度。
以上就是Composer脚本scripts如何使用的详细内容,更多请关注php中文网其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/264364.html
微信扫一扫
支付宝扫一扫