Semo 系列文章之三:插件 semo-plugin-chalk

908 阅读3分钟

之前已经写了2篇 Semo 相关的文章,给大家展示了 Semo 部分的能力,分别是:

今天是第三篇,给大家介绍一个 Semo 新出炉的插件: semo-plugin-chalk,相信用 Node 写过命令行工具的人肯定用过 chalk 这个包,而且这个包也有相关的命令行工具版本 chalk-cli,我写这个插件的目的一个是方便自己使用,还有一个就是继续向大家展示 Semo 插件开发技巧。

功能描述

我们在写 Shell 脚本的时候有时需要向外输出一些信息,默认 Shell 的 echo 只能输出默认色调的字符串,而终端的颜色语法可读性不是很好,运维工程师可以用这样的插件提供各种颜色的终端输出。

PS: 这里当然有很多种解决方案,这里仅仅是 Semo 给大家提供的解决方案。

安装 Semo

首先,当然是需要大家安装 Semo,推荐全局安装。

npm i -g @semo/cli

如果不安装,通过 npx @semo/cli 来调用后面的命令也是可以的,当然这种是不推荐的。

安装插件

插件也推荐全局安装,因为这不属于业务依赖

npm i -g semo-plugin-chalk

当然,受益于 semo run 命令提供的机制,这里也可以不手动安装插件,而是使用 semo run chalk 来调用。本文仍然假设大家安装了插件,这样命令更短一些。

使用方法

查看颜色示例:

有时候我们记不住什么关键字代表什么颜色,通过 --demo 参数可以看到,效果已经在头图中展示。

semo chalk --demo

直接输出默认文本

semo chalk hello

给文本添加颜色

semo chalk hello blue

给文本添加颜色,下划线,粗体,倾斜,反色

semo chalk hello blue.underline.bold.italic.inverse

同一行文本不同颜色,需要用到 chalk 的标签模板语法

semo chalk '{red hello} {blue world}' -t

-t--template 参数表明开启模板解析,否则默认是直接输出。

以上命令的效果如下:

小结

以上就是这个 Semo 插件的用法,这个插件开发过程一共就花了不到一个小时,因为首先核心特性都是 chalk 提供的,其次,Semo 提供了 插件开发的模板,比如,我是这样起步的:

semo create semo-plugin-chalk --template=plugin

所以,这里主要还是向大家展示经过不断优化后,Semo 这个项目的一点点能力,同时,这个项目有一些性能问题,还需要大家给予指点。

彩蛋

假设大家环境里只安装了 node, npm, npx 这样的基本命令,仍然可以一行命令执行本文中的命令,示例:

npx @semo/cli run chalk -- hello blue.underline.bold.italic.inverse

慢不慢且不说,it works :)

交流群