1.资源地址
下面的内容只是对这个包做一个简单的了解,如果要详细了解,建议查看官网。
另外,需要知道,终端中的显示的颜色都是已经固定好的,不同颜色的表示可以使用终端控制符来实现。
需要说明的是:下面三个是等价的,第一个是八进制;第二个是十六进制;第三个是 Unicode-16 的显示方式
\033
\x1b
\u001b
2.包的作用
anser
包的作用:简单的ANSI序列(终端控制符)转换工具。
- 将ANSI序列转成HTML元素
- 转成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'
)
上面的内容也是终端控制符的使用。