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 类的静态方法(推荐用于复杂逻辑)
“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如何使用的详细内容,更多请关注composer php laravel js json php laravel composer json echo Static 命名空间 class public Namespace Event function 事件 自动化 Foundation