给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系统版本显示有差异。

相关推荐
撸码到无法自拔6 小时前
使用 MCP(模型上下文协议)和 Claude 在 Node.js 中构建聊天应用程序
node.js
Dontla7 小时前
node.js模块化步骤(各标准区别)CommonJS规范、AMD规范、UMD规范、ES Modules (ESM)
node.js
正在努力Coding7 小时前
Cannot find module ‘@npmcli/config‘
node.js
m0_zj10 小时前
55.[前端开发-前端工程化]Day02-包管理工具npm等
前端·npm·node.js
zlpzlpzyd13 小时前
node.js为什么产生?
node.js
大G哥1 天前
使用 MCP(模型上下文协议)和 Claude 在 Node.js 中构建聊天应用程序
node.js
小宋要上岸1 天前
通过 Node.js 搭配 Nodemailer 实现邮箱验证码发送
c++·node.js·nodemailer
小龙在山东2 天前
npm pnpm yarn 设置国内镜像
前端·npm·node.js
Yan-英杰2 天前
npm error code CERT_HAS_EXPIRED
服务器·前端·数据库·人工智能·mysql·npm·node.js
徐白11773 天前
Node.js 事件循环和线程池任务完整指南
开发语言·javascript·node.js