给CMD终端多一些色彩

最近在写Node.js服务器,想给终端一点颜色,能够有更好的个性化提示功能。

CMD终端配色规则

\x1b[ ${样式代码}m ${文本} \x1b[0m

这段代码是ANSI转义序列,用于在终端中设置文本样式和颜色。具体含义如下:

  1. \x1b[ - 表示ANSI转义序列的开始
  2. ${样式代码} - 动态插入的样式代码(如31表示红色,1表示加粗等)
  3. m - 表示样式设置的结束符
  4. ${文本} - 要应用样式的文本内容
  5. \x1b[0m - 重置所有样式,恢复终端默认设置

一、文本样式(1,3,4,7,9,53)

二、前景色(30-37 90-97)

三、背景色40-47 100-107)

四、组合配色

构造一个简单的颜色函数

js 复制代码
function color(文本, 样式代码=37){
    return `\x1b[${样式代码}m${文本}\x1b[0m`;
}

五、完整代码

js 复制代码
const str = `
标准前景色(30-37):
'black'         \x1B[30m黑色\x1B[0m (30)
'red'           \x1B[31m红色\x1B[0m (31)
'green'         \x1B[32m绿色\x1B[0m (32)
'yellow'        \x1B[33m黄色\x1B[0m (33)
'blue'          \x1B[34m蓝色\x1B[0m (34)
'magenta'       \x1B[35m紫色\x1B[0m (35)
'cyan'          \x1B[36m青色\x1B[0m (36)
'white'         \x1B[37m白色\x1B[0m (37)

亮色前景色(90-97):
'lightBlack/gray'    \x1B[90m亮黑/灰色\x1B[0m (90)
'lightRed'      \x1B[91m亮红\x1B[0m (91)
'lightGreen'    \x1B[92m亮绿\x1B[0m (92)
'lightYellow'   \x1B[93m亮黄\x1B[0m (93)
'lightBlue'     \x1B[94m亮蓝\x1B[0m (94)
'lightMagenta'  \x1B[95m亮紫\x1B[0m (95)
'lightCyan'     \x1B[96m亮青\x1B[0m (96)
'lightWhite'    \x1B[97m亮白\x1B[0m (97)

文本样式(1,3,4,7,9,53):
'bold'          \x1B[1m加粗\x1B[0m (1)
'italic'        \x1B[3m斜体\x1B[0m (3)
'underline'     \x1B[4m下划线\x1B[0m (4)
'inverse'       \x1B[7m反色\x1B[0m (7)
'strikethrough' \x1B[9m删除线\x1B[0m (9)
'overline'       \x1B[53m上划线\x1B[0m (53)



背景色(40-47):
'blackBG'       \x1B[40m黑色背景\x1B[0m (40)
'redBG'         \x1B[41m红色背景\x1B[0m (41)
'greenBG'       \x1B[42m绿色背景\x1B[0m (42)
'yellowBG'      \x1B[43m黄色背景\x1B[0m (43)
'blueBG'        \x1B[44m蓝色背景\x1B[0m (44)
'magentaBG'     \x1B[45m紫色背景\x1B[0m (45)
'cyanBG'        \x1B[46m青色背景\x1B[0m (46)
'whiteBG'       \x1B[47m白色背景\x1B[0m (47)

亮色背景(100-107):
'lightBlackBG/greyBG'  \x1B[100m亮黑/灰色背景\x1B[0m (100)
'lightRedBG'    \x1B[101m亮红背景\x1B[0m (101)
'lightGreenBG'  \x1B[102m亮绿背景\x1B[0m (102)
'lightYellowBG' \x1B[103m亮黄背景\x1B[0m (103)
'lightBlueBG'   \x1B[104m亮蓝背景\x1B[0m (104)
'lightMagentaBG'\x1B[105m亮紫背景\x1B[0m (105)
'lightCyanBG'   \x1B[106m亮青背景\x1B[0m (106)
'lightWhiteBG'  \x1B[107m亮白背景\x1B[0m (107)
`;

console.log(str)

function color(文本, 样式代码=37){
    return `\x1b[${样式代码}m${文本}\x1b[0m`;
}


console.log(  color('红色 加粗','31;1' )  )
console.log(  color('亮青色背景 亮黄色','93;106' )  )

六、参考文章和启发

2019年 《Node.js在控制台彩色输出的方法及原理》
juejin.cn/post/684490...

点评:文章引入了模块require('chalk') ,而我希望尽可能用原生的方式。关注到了53号样式为上划线,学会了样式的组合形式 样式;样式 的形式,快速了解到了样式 颜色规范,重排编号从小到大。使用豆包指挥重排格式。 注:要特别注意不同win系统版本显示有差异。

相关推荐
XIAOHEZIcode20 小时前
Ubuntu 终端美化全栈指南:Bash 到 Kitty 踩坑实录
linux·ubuntu·命令行
见过夏天2 天前
Node.js 常用命令全攻略
node.js
前端双越老师2 天前
我从 0 开发的 AI Agent 智语项目发布了
前端·node.js·agent
kyriewen3 天前
2026 年了,还在用 Node.js?Bun 迁移实战:20 分钟搞定,附踩坑记录
前端·javascript·node.js
donecoding3 天前
3 条命令搞定闭环 Monorepo:Lerna 版本管理 + 拓扑构建 + 自定义分发
前端·前端框架·node.js
Flynt4 天前
npm v12 来了:allowScripts 默认关闭,我的项目差点跑不起来
安全·npm·node.js
叫我Paul就好5 天前
尝试 Node 搭建后端-开发框架
node.js
风止何安啊7 天前
网课倍速痛点解决:一套前端代码实现自由控速播放器
前端·javascript·node.js
糖拌西瓜皮7 天前
Node.js核心模块实战:文件、路径、HTTP与流处理
javascript·node.js
糖拌西瓜皮7 天前
Node.js工程化实践:包管理、TypeScript配置与代码质量
typescript·node.js