type
status
date
slug
summary
tags
category
icon
password
上次编辑时间
Apr 9, 2025 02:06 PM
我们都知道,在nodejs环境下使用普通的
console.log
console.error
console.info
输出都是不会有颜色的,如果你不知道,那你现在知道啦😏。在这种情况下,如果我们需要彩色输出,则通常通过chalk
这个node模块来实现,chalk使用方法
基本用法
上面代码执行的结果如下,
Leo's Blog
加粗,字体颜色是红色,背景颜色是白色。注意:背景颜色要在 bg 后面加上具体的颜色,颜色的第一个字母大写。
在 HTML 中支持 RGB 颜色,在这里同样支持,而且是支持所有 HTML 中支持的颜色,如十六进制颜色。这里仅仅说明十六进制颜色。
下面的代码会和上面的代码实现相同的效果。
使用模板
该模块有一个很方便的用法就是支持模板输出,也就是说,不管在字符串中的哪个位置想改变输出的颜色,都是可以的。
当然,也可以使用 RGB 颜色值。

常见形式
我们经常看到的警告、错误提示就是这么来的

常用API
样式
- reset - 样式重置
- bold - 加粗
- dim - 浅高亮
- italic - 斜体
- underline - 下划线
- inverse- 反转前景和背景色
- hidden - 隐藏内容
- strikethrough - 删除线
- visible- 显示chalk level > 0 的内容
前景色关键字(非全支持)
- black
- red
- green
- yellow
- blue
- magenta
- cyan
- white
- blackBright (alias: gray, grey)
- redBright
- greenBright
- yellowBright
- blueBright
- magentaBright
- cyanBright
- whiteBright
背景色关键字(非全支持)
- bgBlack
- bgRed
- bgGreen
- bgYellow
- bgBlue
- bgMagenta
- bgCyan
- bgWhite
- bgBlackBright (alias: bgGray, bgGrey)
- bgRedBright
- bgGreenBright
- bgYellowBright
- bgBlueBright
- bgMagentaBright
- bgCyanBright
- bgWhiteBright
更多API可以看看官方文档。
chalk让控制台输出样式多变的原理
其原理最重要的一个知识点就是
ANSI Escape code
.ASCII编码中有些字符是不能用来在终端中打印显示的,比如
'\\a' 0x7
代表响铃,'\\n' 0x0A
代表换行,这些字符被称为控制符。而其中的一个控制符
'\\e' 0x1B
比较特殊,这个字符代表 ESC ,即键盘上 ESC 按键的作用。ESC 是单词 escape 的缩写,即逃逸的意思。文本中出现这个控制符,表示接下来的字符是ANSI Escape code
编码。而
ANSI Escape code
编码中有专门控制字符颜色的控制符,例如:\\e[31;44;4;1m
其意义如下:
\\e
代表开始ANSI Escape code
[
代表转义序列开始符 CSI,Control Sequence Introducer
31;44;4;1
代表以; 分隔的文本样式控制符,其中 31 代表文本前景色为红色,44代表背景为蓝色,4代表下划线,1代表加粗
m
代表结束控制符序列
我们可以在终端中输入如下命令:
会有如下输出,带下划线的LEO字样:

因为
\\e
控制符的16进制码为 0x1B
, 8 进制码为 033
,也可以用以下写法达到同样效果:
通过维基百科,我查到有以下参数控制符:
代码 | 作用 | 备注 |
0 | 重置/正常 | 关闭所有属性。 |
1 | 粗体或增加强度 | ㅤ |
2 | 弱化(降低强度) | 未广泛支持。 |
3 | 斜体 | 未广泛支持。有时视为反相显示。 |
4 | 下划线 | ㅤ |
5 | 缓慢闪烁 | 低于每分钟150次。 |
6 | 快速闪烁 | MS-DOS ANSI.SYS;每分钟150以上;未广泛支持。 |
7 | 反显 | 前景色与背景色交换。 |
8 | 隐藏 | 未广泛支持。 |
9 | 划除 | 字符清晰,但标记为删除。未广泛支持。 |
10 | 主要(默认)字体 | ㅤ |
11–19 | 替代字体 | 选择替代字体{\displaystyle n-10}{\displaystyle n-10}。 |
20 | 尖角体 | 几乎无支持。 |
21 | 关闭粗体或双下划线 | 关闭粗体未广泛支持;双下划线几乎无支持。 |
22 | 正常颜色或强度 | 不强不弱。 |
23 | 非斜体、非尖角体 | ㅤ |
24 | 关闭下划线 | 去掉单双下划线。 |
25 | 关闭闪烁 | ㅤ |
27 | 关闭反显 | ㅤ |
28 | 关闭隐藏 | ㅤ |
29 | 关闭划除 | ㅤ |
30–37 | 设置前景色 | 参见下面的颜色表。 |
38 | 设置前景色 | 下一个参数是5;n或2;r;g;b,见下。 |
39 | 默认前景色 | 由具体实现定义(按照标准)。 |
40–47 | 设置背景色 | 参见下面的颜色表。 |
48 | 设置背景色 | 下一个参数是5;n或2;r;g;b,见下。 |
49 | 默认背景色 | 由具体实现定义(按照标准)。 |
51 | Framed | ㅤ |
52 | Encircled | ㅤ |
53 | 上划线 | ㅤ |
54 | Not framed or encircled | ㅤ |
55 | 关闭上划线 | ㅤ |
60 | 表意文字下划线或右边线 | 几乎无支持。 |
61 | 表意文字双下划线或双右边线 | ㅤ |
62 | 表意文字上划线或左边线 | ㅤ |
63 | 表意文字双上划线或双左边线 | ㅤ |
64 | 表意文字着重标志 | ㅤ |
65 | 表意文字属性关闭 | 重置60–64的所有效果。 |
90–97 | 设置明亮的前景色 | aixterm(非标准)。 |
100–107 | 设置明亮的背景色 | aixterm(非标准)。 |
颜色编码表如下:
名称 | 前景色代码 | 背景色代码 |
黑 | 30 | 40 |
红 | 31 | 41 |
绿 | 32 | 42 |
黄 | 33 | 43 |
蓝 | 34 | 44 |
品红 | 35 | 45 |
青 | 36 | 46 |
白 | 37 | 47 |
亮黑(灰) | 90 | 100 |
亮红 | 91 | 101 |
亮绿 | 92 | 102 |
亮黄 | 93 | 103 |
亮蓝 | 94 | 104 |
亮品红 | 95 | 105 |
亮青 | 96 | 106 |
亮白 | 97 | 107 |
示例:
- 作者:Tsing
- 链接:https://www.huqing.site/full-stack/1cb94e5f-a0ad-80c7-92b4-fa7822482c14
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。