在composer scripts中如何获取当前执行的命令名称
发布时间 - 2025-09-24 00:00:00 点击率:次答案是通过事件名称解析和环境变量COMPOSER_COMMAND判断执行命令。可在脚本中使用$argv传参、读取COMPOSER_COMMAND环境变量或在事件类中解析事件名来识别install或update命令。
在 Composer scripts 中,无法直接通过内置变量获取当前执行的命令名称(如 install、update 等),但可以通过一些间接方式判断或传递命令信息。
使用自定义脚本并显式传参
最可靠的方式是在 composer.json 中定义脚本时,手动将命令名称作为参数传递给 PHP 脚本。
例如:
{
"scripts": {
"post-install-cmd": [
"php h
andle-script.php install"
],
"post-update-cmd": [
"php handle-script.php update"
]
}
}
在 handle-script.php 中接收参数:
通过环境变量识别执行上下文
Composer 在执行某些脚本时会设置特定环境变量,可以用来判断上下文。
例如,判断是否是 install 或 update:
COMPOSER_COMMAND 环境变量通常可用于大多数标准命令场景。
在事件监听类中使用 Event 对象
如果使用的是 PHP 类作为脚本处理器,可以通过 Script\Event 对象获取命令信息。
getComposer()->getCommand(); // 注意:并非所有版本都支持 getCommand() // 更稳妥的方式是通过 $event->getName() 获取事件名 $eventName = $event->getName(); // 如 post-install-cmd if (strpos($eventName, 'install') !== false) { echo "由 install 命令触发\n"; } elseif (strpos($eventName, 'update') !== false) { echo "由 update 命令触发\n"; } } }对应的 composer.json 配置:
{ "scripts": { "post-install-cmd": "MyScriptHandler::postCmd", "post-update-cmd": "MyScriptHandler::postCmd" } }基本上就这些。Composer 没有提供直接获取原始 CLI 命令的统一方法,推荐结合 事件名称解析 和 环境变量 COMPOSER_COMMAND 来判断执行上下文。不复杂但容易忽略细节。
# php # js # json # composer # 处理器 # 环境变量 # Event # 对象 # 事件 # 可以通过 # 类中 # 的是 # 是在 # 可在 # 自定义 # 可以用来 # 判断是否 # 最可靠 # 可用于
相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571 】
相关推荐: php结合redis实现高并发下的抢购、秒杀功能的实例 如何在IIS服务器上快速部署高效网站? 西安专业网站制作公司有哪些,陕西省建行官方网站? HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】 googleplay官方入口在哪里_Google Play官方商店快速入口指南 佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】 消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工 Android 常见的图片加载框架详细介绍 如何快速上传自定义模板至建站之星? 公司门户网站制作流程,华为官网怎么做? 使用Dockerfile构建java web环境 如何在景安服务器上快速搭建个人网站? 如何在腾讯云免费申请建站? 宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程 Laravel中的withCount方法怎么高效统计关联模型数量 深圳网站制作平台,深圳市做网站好的公司有哪些? 如何在云主机快速搭建网站站点? 如何在局域网内绑定自建网站域名? nginx修改上传文件大小限制的方法 如何用西部建站助手快速创建专业网站? 如何快速搭建个人网站并优化SEO? 大同网页,大同瑞慈医院官网? Laravel PHP版本要求一览_Laravel各版本环境要求对照 Laravel如何处理文件下载请求?(Response示例) Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】 Laravel怎么实现微信登录_Laravel Socialite第三方登录集成 谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复 Thinkphp 中 distinct 的用法解析 Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】 如何在企业微信快速生成手机电脑官网? 英语简历制作免费网站推荐,如何将简历翻译成英文? Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转 VIVO手机上del键无效OnKeyListener不响应的原因及解决方法 标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南 免费网站制作appp,免费制作app哪个平台好? INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】 Laravel Seeder填充数据教程_Laravel模型工厂Factory使用 Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例) Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门 个人摄影网站制作流程,摄影爱好者都去什么网站? Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】 Python自然语言搜索引擎项目教程_倒排索引查询优化案例 Laravel如何使用Vite进行前端资源打包?(配置示例) 韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐 C语言设计一个闪闪的圣诞树 Windows Hello人脸识别突然无法使用 如何用虚拟主机快速搭建网站?详细步骤解析 详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一) android nfc常用标签读取总结 美食网站链接制作教程视频,哪个教做美食的网站比较专业点?


andle-script.php install"
],
"post-update-cmd": [
"php handle-script.php update"
]
}
}