一个脚本,在 Composer 中,可以是一个 PHP 回调(定义为静态方法)或任何命令行可执行的命令。脚本对于在 Composer 运行过程中,执行一个资源包的自定义代码或包专用命令是非常有用的。
注意:只有在根包的 composer.json
中定义的脚本才会被执行。即便根包的外部依赖定义了其自身的脚本,Composer 也不会去执行这些额外的脚本。
Composer 在运行过程中将会触发以下事件:
事件名称
详细说明
pre-install-cmd
在 install
命令执行前触发。
post-install-cmd
在 install
命令执行后触发。
pre-update-cmd
在 update
命令执行前触发。
post-update-cmd
在 update
命令执行后触发。
pre-status-cmd
在 status
命令执行前触发。
post-status-cmd
在 status
命令执行后触发。
pre-package-install
在资源包安装前触发。
post-package-install
在资源包安装后触发。
pre-package-update
在资源包更新前触发。
post-package-update
在资源包更新后触发。
pre-package-uninstall
在资源包被卸载前触发。
post-package-uninstall
在资源包被卸载后触发。
pre-autoload-dump
在自动加载器被转储前触发,无论是 install
/update
还是 dump-autoload
命令都会触发。
post-autoload-dump
在自动加载器被转储后触发,无论是 install
/update
还是 dump-autoload
命令都会触发。
post-root-package-install
在 create-project
命令期间,根包安装完成后触发。
post-create-project-cmd
在 create-project
命令执行后触发。
archive
command is executed.archive
command is executed.注意:Composer 不会去执行任何依赖包中定义的install
或update
相关脚本。因此你不应该在依赖包中申明pre-update-cmd
或pre-install-cmd
。如果你需要在执行install
或update
命令前使用脚本,请确保它们已被定义在根包中。
在 composer.json
的根 JSON 对象中应该有一个名为 "scripts"
的属性,它包含有一系列的事件名称,以及对应的事件脚本。一个事件的脚本可以被定义为一个字符串(仅适用于单个脚本)或数组(单个或多个脚本)。
对于任何给定的事件:
脚本定义实例:
{
"scripts": {
"post-update-cmd": "MyVendor\\MyClass::postUpdate",
"post-package-install": [
"MyVendor\\MyClass::postPackageInstall"
],
"post-install-cmd": [
"MyVendor\\MyClass::warmCache",
"phpunit -c app/"
]
}
}
使用前面定义的例子,这里的 MyVendor\MyClass
类,就可以被使用来执行 PHP 的回调:
<?php
namespace MyVendor;
use Composer\Script\Event;
class MyClass
{
public static function postUpdate(Event $event)
{
$composer = $event->getComposer();
// do stuff
}
public static function postPackageInstall(Event $event)
{
$installedPackage = $event->getOperation()->getPackage();
// do stuff
}
public static function warmCache(Event $event)
{
// make cache toasty
}
}
当一个事件被触发,Composer 的内部事件处理程序将接收一个 Composer\Script\Event
对象,这是传递给您的 PHP 回调的第一个参数。这个 Event
对象拥有一些 getter 方法来帮助你取得当前事件的上下文:
getComposer()
: 返回当前的 Composer\Composer
对象实例。getName()
: 返回事件名称的字符串。getIO()
: 返回当前的 输入\输出 流,它实现了 Composer\IO\IOInterface
接口,以便在控制台中使用。如果你想手动运行事件脚本,可以使用下面的语法结构:
composer run-script [--dev] [--no-dev] script
例如 composer run-script post-install-cmd
将会运行所有 post-install-cmd 事件下定义的脚本。
Original url: Access
Created at: 2019-02-14 16:52:13
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论