Why?

在命令行程序开发过程中,我们经常需要对输出的文字添加颜色。例如比较重要的错误信息可以设置为红色,警告信息可以设置为黄色,对于操作成功信可以设置成绿色。

How?

在文本终端控制颜色和格式可以使用ANSI转义码。在文本周围添加明显不同于输出的字符串,称为非打印字符串。举个例子:

  1. console.log('\033[96m Hello World!\033[36m');
  • \033:表示转义序列开始
  • [:表示开始颜色设置
  • 90:表示颜色色值
  • m:表示颜色设置结束

ps:最后的 \033[36m是将颜色重新设置回去的

下图是比较常用的色值:

colors.png

Usage

如果像上面这样去使用或许过于繁琐,可以将常用的色值封装成工具来调用。

  1. const COLOR_MAP = {
  2. Black:'30',
  3. Red:'31',
  4. Green:'32',
  5. Yellow:'33',
  6. Blue:'34,
  7. Magenta:'35',
  8. Cyan:'36',
  9. White:'37',
  10. BrightBlack:'90',
  11. BrgihtRed:'91',
  12. BrightGreen:'92',
  13. BrightYellow:'93',
  14. BrightBlue:'94',
  15. BrightMagenta:'95',
  16. BrightCyan:'96',
  17. BrightWhite:'97'
  18. }
  19. export const function setColor(text,color='Cyan') {
  20. if(!text) {
  21. return '';
  22. }
  23. if(color) {
  24. return '\033['+COLOR_MAP[color]+'m'+text+'\033['+COLOR_MAP['Cyan']+'m\n';
  25. }
  26. }