1.资源地址

  1. npm地址:https://www.npmjs.com/package/anser
  2. GitHub地址:https://github.com/IonicaBizau/anser

下面的内容只是对这个包做一个简单的了解,如果要详细了解,建议查看官网。

另外,需要知道,终端中的显示的颜色都是已经固定好的,不同颜色的表示可以使用终端控制符来实现。

需要说明的是:下面三个是等价的,第一个是八进制;第二个是十六进制;第三个是 Unicode-16 的显示方式

\033
\x1b
\u001b

2.包的作用

anser 包的作用:简单的ANSI序列(终端控制符)转换工具。

  1. 将ANSI序列转成HTML元素
  2. 转成JSON数据输出

3.安装

3-1 npm 安装

$ npm install anser --save-dev

3-2 yarn 安装

$ yarn add anser --dev

4.使用

常用的方法没有几个,下面就列出三个较常用的。

4-1 ansiToText

ansiToText 将 ANSI 转成字符串输出。

const Anser = require("anser");
const txt = "\u001b[38;5;196mHello\u001b[39m \u001b[48;5;226mWorld\u001b[49m"; // 这个地方不理解的话,一定要看看上面的关于终端控制符的链接
console.log(Anser.ansiToText(txt));

// 'Hello World'

4-2 ansiToJson

ansiToJson 将 ANSI 转成 JSON 格式是数据。

const Anser = require("anser");
const txt = "\u001b[38;5;196mHello";
console.log(Anser.ansiToJson(txt));
[ { content: '',
    fg: null,
    bg: null,
    fg_truecolor: null,
    bg_truecolor: null,
    clearLine: false,
    decoration: null,
    was_processed: false,
    isEmpty: [Function: isEmpty] },
  { content: 'Hello',
    fg: '255, 0, 0',                // 前景色,文字的颜色
    bg: null,                       // 背景色
    fg_truecolor: null,
    bg_truecolor: null,
    clearLine: false,
    decoration: null,
    was_processed: true,
    isEmpty: [Function: isEmpty] } ]

可以指定第二个参数:

const Anser = require("anser");
const txt = "\u001b[38;5;196mHello";
console.log(Anser.ansiToJson(txt));
[ { content: '',
    fg: null,
    bg: null,
    fg_truecolor: null,
    bg_truecolor: null,
    clearLine: false,
    decoration: null,
    was_processed: false,
    isEmpty: [Function: isEmpty] },
  { content: 'Hello',
    fg: 'ansi-palette-196',              // 这里从颜色值变成了类名
    bg: null,
    fg_truecolor: null,
    bg_truecolor: null,
    clearLine: false,
    decoration: null,
    was_processed: true,
    isEmpty: [Function: isEmpty] } ]

4-3 ansiToHtml

ansiToHtml 将 ANSI 转成 HTML。

const Anser = require("anser");
const txt = "\u001b[38;5;196mHello";
console.log(Anser.ansiToHtml(txt));
<span style="color:rgb(255, 0, 0)">Hello</span>

可以指定第二个参数,来将颜色值转成类名:

const Anser = require("anser");
const txt = "\u001b[38;5;196mHello";
console.log(Anser.ansiToHtml(txt, { use_classes: true }));
<span class="ansi-palette-196-fg">Hello</span>

5.补充

清空控制台可以使用下面的方式:

process.stdout.write(
  process.platform === 'win32' ? '\x1Bc' : '\x1B[2J\x1B[3J\x1B[H'
)

上面的内容也是终端控制符的使用。


沫俱宏
763 声望33 粉丝

自己的肯定最重要,做任何决定,一定要从内心出发