Composer脚本scripts如何使用

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

Composer脚本scripts如何使用

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

大家都在看:

composer php laravel js json php laravel composer json echo Static 命名空间 class public Namespace Event function 事件 自动化 Foundation

事件
上一篇
下一篇