deerdama/console-zoo-laravel

一个用于在 Laravel artisan 命令中轻松添加样式和图标到控制台输出的包

v1.4.0 2021-10-26 19:35 UTC

This package is auto-updated.

Last update: 2024-09-27 02:16:27 UTC


README

此 Laravel 包的目的是使控制台输出更不单调,并能够随时快速样式化内容和添加各种图标。此外,还有一些辅助函数,如时间、持续时间输出,包括分段计时。

包含具有典型 预定义格式 的方法:successinfowarningerror


Colors



Icons

Defaults

Duration

Inline


安装

composer require deerdama/console-zoo-laravel


Laravel 版本:在 >= 5.0 的版本中不应有任何问题(在 5.X6.X7.X8.x 等多个版本上进行使用和测试,所有这些版本上都没有问题)

  • 请注意,在 5.5 以下 的版本上:需要手动注册服务提供者,因此您需要将 Deerdama\ConsoleZoo\ConsoleZooServiceProvider 添加到您的 config/app.php 提供者中

  • 如果有人想在 4.2 上尝试此包... 基本输出方法 zoo()surprise() 实际上是可以工作的,但请忘记注册服务提供者、使用预览命令或使用默认方法如 zooSuccess()

❗ 如果您想更改某些默认参数,则需要发布配置文件

php artisan vendor:publish --provider=Deerdama\\ConsoleZoo\\ConsoleZooServiceProvider


显示所有选项

要查看所有 可用颜色和图标 并检查它们在您的控制台中的外观,您可以运行 artisan 命令 php artisan zoo:options

❕ 请注意,图标/颜色可能不会与截图完全相同,甚至可能无法为您工作,这取决于使用的控制台(以及一些其他情况),并且无法由包本身控制。如果您想了解更多关于幕后原因和限制的信息,例如,可以在这里找到一些信息 这里... 或者直接在 Google 上搜索


可用参数

所有参数都是可选的。


基本用法

  • 一旦安装,您就可以通过包含 ConsoleZoo 特性在任何 artisan 命令中使用该包,例如:
class TestZoo extends Command
{
    use \Deerdama\ConsoleZoo\ConsoleZoo;

    //etc.......
}
  • 您可以将消息和参数传递给所有输出方法。第二个参数 $parameters 必须是一个数组,但它始终是可选的,如果您想的话,可以完全跳过它。有关更多详细信息,请参阅 可用参数 部分。

  • 主要的灵活输出方法,您可以使用任何消息是 $this->zoo($messageString, $parameters),例如

    $this->zoo("Let's take it slow...", [
        'color' => 'light_blue_bright_2',
        'icons' => ['turtle'],
        'bold',
        'italic',
    ]);

Result


  • 其他通用方法 可以在 默认值 部分找到。此外,内联使用 部分包含有关如何在一条消息中应用多种样式以及在哪里添加图标的详细信息

  • 空行:要添加一些换行符,可以使用 $this->br();,这将简单地输出一个空行,如果您想要更大的间隔,只需传入您想要的行数即可,例如 $this->br(4);

  • 惊喜 如果您想保持随机性,可以使用 $this->surprise($messageString, $optionalParam)

    • 图标总是随机的,但它们可以被限制在特定的 category 中。
    • 可用类别: 动物,自然,表情符号,食物,交通,其他
    • 所有其他参数都是允许的,如果没有传递任何参数,将使用默认参数
    • 如果没有设置默认值或显式传递,文本颜色将是随机的,例如
    $this->surprise("message", [
        'category' => 'animals'
    ]);

默认值和配置

  • 配置:所有默认样式和格式都可以在 配置文件 config\zoo.php 中更改。(配置文件需要被 发布!)

  • 有一些 默认消息类型 具有预定义的格式,可以在配置中更改或通过传递参数覆盖。

    • $this->zooInfo($message, $optionalParam);
    • $this->zooSuccess($message, $optionalParam);
    • $this->zooWarning($message);
    • $this->zooError($message);

    examples

  • 一次性 默认值:如果您想为当前命令设置默认样式,则可以在命令开始时通过 $this->zooSetDefaults($parameters) 设置默认值,而无需在每次输出时传递相同的参数。

    • 这些默认值不会影响预定义的方法,如 infoerror 等..,它只会影响主要的 $this->zoo()$this->surprise() 方法(不会影响后者的图标)。
    • 在特定输出中稍后传递参数将 覆盖 该特定输出的默认值。例如
    $this->zooSetDefaults([
        'color' => 'cyan',
        'icons' => 'wolf',
        'bold'
    ]);

    // And then..
    $this->zoo("Meh, I'm just default..");

Result

  • 稍后明确传递的任何参数都将覆盖默认值。要覆盖没有值的默认参数,只需在它们前面添加一个 no_。例如,可以使用 no_underlineno_bold 取消 underlinebold
    $this->zoo("I'm the chosen one!!", [
        'icons' => 'pig_face',
        'swap',
        'italic'
    ]);

Result

  • 如果您不希望在具有默认图标的输出中包含任何图标,则只需传递(或在配置中设置)['icons' => false],例如
    $this->zooError("You are kind of boring..", [
        'icons' => false
    ]);

Result


时间戳和持续时间

  • 可以通过传递 timestamp 参数或在已发布的配置 zoo.php 中将 'timestamp' => false 更改为 true 来在每次输出前添加一个 timestamp
   $this->zooInfo("How about some sleep??", [
       'timestamp' => true
   ]);

或它可以通过更改已发布的配置 zoo.php 中的 'timestamp' => falsetrue 来设置为默认行为。

  • 在配置的 time 数组中,您还可以更改默认时区和时间戳的格式及其输出样式。默认时区是配置文件中设置的 tz。

  • 要仅输出 当前时间,可以使用 time() 函数,该函数接受额外的参数来覆盖默认值,一些示例..

    $this->time();
    $this->br();
    $this->time(['format' => 'H:i:s T', 'color' => 'blue']);
    $this->br();
    $this->time([
        'tz' => 'pst',
        'format' => 'jS \o\f F, Y H:i:s',
        'icons' => 'alarm_clock',
        'color' => 'green_bright_3'
    ]);

  • 持续时间:您可以使用 $this->duration(); 获取当前/总持续时间,但您需要先设置计时器!要设置起始时间,请调用 $this->start();。持续时间具有默认的格式和样式,可以在配置中更改或在 $this->duration($param) 中作为参数传递,例如
    $this->duration();

    $this->duration([
        'format' => 'Total duration %s.%f seconds',
        'color' => 'pink_bright_2',
        'icons' => 'snail'
    ]);
    
    $this->duration([
        'timestamp' => true,
        'format' => '%i min and %s sec',
        'icons' => false
    ]);

  • 圈数:您可以使用 $this->lap(); 向计时器添加圈数,输出格式的样式与 duration() 相同,另外还有两个额外的选项 prepend_textappend_text,您可以通过 {lap_number}(包括括号)添加当前圈数。
    默认值可以在配置 zoo.php 中的 lap_duration 属性中更改。
    要添加圈数而不输出其持续时间,请使用 $this->lap(false);。要覆盖默认样式/格式,请将参数作为第二个参数传递。
    $this->lap();
    
    $this->lap(true, ['prepend_text' => 'Lap {lap_number} duration: ']);


更改颜色

可以通过colorbackground参数更改文本和背景颜色。

有多个预定义颜色可以通过artisan命令显示。包括所有基本颜色,每个颜色都有几个浅色/深色/亮色选项。例如,blue也有blue_light_1blue_dark_2blue_bright_2等...大多数颜色都有xxx_light_4xxx_dark_4xxx_bright_3等选项。

颜色可以通过多种方式传递

  1. 字符串 - 颜色名称:['color' => 'red', 'background' => 'blue_dark_1']
  2. 数组 - 使用数组传递任何颜色作为rgb:['color' => [255, 0, 0], 'background' => [0, 0, 255]]
  3. 整数 - 您可以直接作为整数传递ANSI颜色代码['color' => 1, 'background' => 4]
  4. 混合 - 如果您想利用您的IDE,则始终可以直接使用\Deerdama\ConsoleZoo\Color中定义的常量['color' => Color::RED, 'background' => Color::BLUE]
  • 请参阅内联使用部分,了解如何仅更改文本的一部分颜色

使用artisan命令查看所有预定义颜色...

colors

等等....

使用图标

  • 要显示消息前的某些图标,可以将icons参数作为字符串或数组传递多个图标
    $this->zoo("We want nuts...", [
        'color' => 'teal_light_1',
        'icons' => ['squirrel', 'squirrel', 'squirrel'],
        'bold',
    ]);

Result

  • 与颜色一样,您可以直接使用\Deerdama\ConsoleZoo\Icon类的常量,例如:['icons' => Icon::SQUIRREL]

  • 传递参数icons_right将指定的图标添加到消息的末尾

  • 要将不同的图标添加到默认输出(成功、错误等)的末尾,请传递或添加到配置['icons_right' => {icon/s}]

  • 如果只想在默认消息的开始处使用图标,请传递或设置配置['icons_right' => false]

    $this->zooInfo("Tutturuuu...", ['icons_right' => 'dog']);

    $this->zooInfo("Tutturuuu...", ['icons_right' => false]);

  • 如果您想使用不可用的图标,可以始终传递所需图标的原始utf-8代码,例如:['icons' => "\xF0\x9F\x90\xBF\xEF\xB8\x8F"] (仍然是一只松鼠)。原始utf-8图标必须放在双引号
  • 请参阅内联使用部分,了解如何在文本的任何位置添加图标

有超过700个预定义图标,使用artisan命令显示所有可用图标... (提示:如果您选择仅显示“图标”,则可以按类别过滤)

等等...


内联使用

  • 内联样式:要仅修改文本的一部分,可以在<zoo {PARAMETERS}></zoo>标签内传递内联属性
    • 需要值(颜色/背景)的参数必须在引号内指定值(无论是单引号还是双引号)
    • 其他参数不应加引号,并用空格分隔
    $this->zoo("Main style <zoo color='magenta' italic>inline style</zoo>, main again <zoo swap bold> 2nd inline </zoo>... 
                <zoo color='pink_bright_2' underline bold>it's not rocket science..</zoo> ", [
        'icons' => ['baby_chick'],
        'color' => 'blue'
    ]);

Result

  • 内联图标:要在文本中添加图标,可以使用<icon>{icon}</icon>标签。
    • 每个标签只能包含一个图标
    • 消息可以包含多个图标标签
    $this->zoo("I'm actually a fluffy <icon>unicorn</icon>, really!!! <icon>face_with_sunglasses</icon>", [
        'color' => 'pink_bright_2',
        'icons' => ['horse'],
        'bold'
    ]);

Result