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

相关推荐
xiaofeichaichai3 小时前
Webpack
前端·webpack·node.js
Python私教6 小时前
把开源 Agent 打包成"解压双击即用"的 Windows 便携包:一条命令的完整实现
node.js
没事别瞎琢磨9 小时前
十一、审计与 Run Session——每一步操作都被记录
人工智能·node.js
没事别瞎琢磨9 小时前
十六、AgentSandbox——把所有模块串起来的编排类
人工智能·node.js
没事别瞎琢磨9 小时前
十二、网络代理与白名单规则引擎
人工智能·node.js
没事别瞎琢磨9 小时前
十四、Git Worktree 隔离执行
人工智能·node.js
没事别瞎琢磨10 小时前
十、统一 Runner 入口——能力检测与模式回退
人工智能·node.js
没事别瞎琢磨10 小时前
八、环境隔离——构建安全的子进程环境
人工智能·node.js
没事别瞎琢磨11 小时前
六、输出捕获与截断
人工智能·node.js
没事别瞎琢磨11 小时前
七、敏感路径预检——Protected Paths
人工智能·node.js