在composer scripts中如何获取当前执行的命令名称

答案是通过事件名称解析和环境变量COMPOSER_COMMAND判断执行命令。可在脚本中使用$argv传参、读取COMPOSER_COMMAND环境变量或在事件类中解析事件名来识别install或update命令。

在composer scripts中如何获取当前执行的命令名称

在 Composer scripts 中,无法直接通过内置变量获取当前执行的命令名称(如 installupdate 等),但可以通过一些间接方式判断或传递命令信息。

使用自定义脚本并显式传参

最可靠的方式是在 composer.json 中定义脚本时,手动将命令名称作为参数传递给 PHP 脚本。

例如:

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

handle-script.php 中接收参数:

<?php $command = $argv[1] ?? 'unknown'; echo "当前执行的命令是: " . $command; 

通过环境变量识别执行上下文

Composer 在执行某些脚本时会设置特定环境变量,可以用来判断上下文。

在composer scripts中如何获取当前执行的命令名称

Smodin AI Content Detector

多语种AI内容检测工具

在composer scripts中如何获取当前执行的命令名称51

查看详情 在composer scripts中如何获取当前执行的命令名称

例如,判断是否是 installupdate

<?php if (getenv('COMPOSER_COMMAND') === 'install') {     echo "正在执行 composer install"; } elseif (getenv('COMPOSER_COMMAND') === 'update') {     echo "正在执行 composer update"; } 

COMPOSER_COMMAND 环境变量通常可用于大多数标准命令场景。

在事件监听类中使用 Event 对象

如果使用的是 PHP 类作为脚本处理器,可以通过 ScriptEvent 对象获取命令信息。

<?php  use ComposerScriptEvent;  class MyScriptHandler {     public static function postCmd(Event $event)     {         $command = $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 处理器 环境变量 php composer json Event 对象 事件

大家都在看:

php js json composer 处理器 环境变量 php composer json Event 对象 事件

事件
上一篇
下一篇