在脚本中回显控制台的最佳方法是什么composer.json?例如,我使用脚本部分创建了一个自定义安装程序,最后我想在控制台中显示一条消息。
目前我只是做这样的回声
"scripts": {
"post-update-cmd": [
"clear",
"echo \"\n\nInstallation Complete\""
]
}
Run Code Online (Sandbox Code Playgroud)
这是可行的,但它会在控制台中打印出命令和回显,所以它最终看起来像这样。
由于 Composer 无论如何都会输出脚本中的所有自定义命令,因此它会加倍并且看起来很丑!
使用编写器脚本将消息回显到控制台的最佳和最干净的方法是什么?
我今天只需要做类似的事情,并且不想为此编写整个脚本/类。
通过滥用两件事,我让它比我预期的效果更好:
"scripts": {
"post-update-cmd": [
"# <info>For your info</info>",
"# <comment>A comment</comment>",
"# <error>Error!!!!</error>",
"# <href=https://symfony.com>Symfony Homepage</>"
]
}
Run Code Online (Sandbox Code Playgroud)
如果您使用 PHP 类而不是直接在脚本中使用 shell,则可以使用 Composers 的 IO 系统写入控制台。
例如,创建一个与此类似的类:
<?php
declare(strict_types=1);
namespace MyApp\Composer;
use Composer\Script\Event;
class ScriptHandler
{
public static function myScript(Event $event): void
{
// Your script here
}
}
Run Code Online (Sandbox Code Playgroud)
Composer\Script\Event类有一个名为 的方法getIO(),您可以使用该方法来获取 的实例Composer\IO\IOInterface,然后该实例有一个方法write,使您的myScript方法看起来像这样:
public static function myScript(Event $event): void
{
$event->getIO()->write('foo'):
}
Run Code Online (Sandbox Code Playgroud)
最后,要使用此类,只需在您的post-update-cmd:
"scripts": {
"post-update-cmd": [
"MyApp\\Composer\\ScriptHandler::myScript"
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1943 次 |
| 最近记录: |