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

相关推荐
A-Kamen7 小时前
Webpack vs Vite:深度对比与实战示例,如何选择最佳构建工具?
前端·webpack·node.js
OpenTiny社区13 小时前
Node.js技术原理分析系列7——Node.js模块加载方式分析
前端·node.js
栩栩云生14 小时前
📥 x-cmd install | jellex - 用 Python 语法在终端里玩转 JSON 数据!
python·json·命令行
kovlistudio15 小时前
红宝书第三十六讲:持续集成(CI)配置入门指南
开发语言·前端·javascript·ci/cd·npm·node.js
eason_fan16 小时前
在 Windows 环境下使用 Linux 命令行:Cygwin 的安装与配置
前端·命令行
小鱼计算机17 小时前
【6】深入学习http模块(万字)-Nodejs开发入门
前端·javascript·http·node.js·http请求
橘右溪20 小时前
Node.js中URL模块详解
node.js
橘右溪20 小时前
Node.js net模块详解
node.js
Mintopia21 小时前
Node.js 中的this
前端·javascript·node.js
玲小珑21 小时前
LLMOps开发(四) Tool + Agent
langchain·node.js·ai编程