0%

Node.js命令行输出不同颜色

  1. 效果
  2. 源码
    1. Node.js通用风格
    2. ES Module风格

效果

做了个简单的测试:

1
2
3
for (let i = 0; i < 150; i++) {
console.log(`${i}: ${fontStyle.custom(i, "123")}`);
}

发现了一些比较有意思的颜色,比如90的灰色,1的加粗,7的反色:

image-20210525092231953

源码

Node.js通用风格

fontStyle.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
const fontStyle = {

/////////////////////////////////////
/// 字体样式

/**加粗: 1 */
bold: (str) => `\x1B[1m${str}\x1B[0m`,

/**斜体: 3 */
italic: (str) => `\x1B[3m${str}\x1B[0m`,

/**下划线: 4 */
underline: (str) => `\x1B[4m${str}\x1B[0m`,

/**反色: 5 */
reverse: (str) => `\x1B[7m${str}\x1B[0m`,

/**隐藏: 8 */
hidden: (str) => `\x1B[8m${str}\x1B[0m`,

/////////////////////////////////////
/// 纯色

/**纯黑: 30 */
black: (str) => `\x1B[30m${str}\x1B[0m`,

/**红: 31 */
red: (str) => `\x1B[31m${str}\x1B[0m`,

/**绿: 32 */
green: (str) => `\x1B[32m${str}\x1B[0m`,

/**黄: 33 */
yellow: (str) => `\x1B[33m${str}\x1B[0m`,

/**蓝: 34 */
blue: (str) => `\x1B[34m${str}\x1B[0m`,

/**品红: 35 */
magenta: (str) => `\x1B[35m${str}\x1B[0m`,

/**青(天蓝): 36 */
cyan: (str) => `\x1B[36m${str}\x1B[0m`,

/**白: 37 */
white: (str) => `\x1B[37m${str}\x1B[0m`,

/////////////////////////////////////
/// 背景色

/**黑色背景: 40 */
blackBG: (str) => `\x1B[40m${str}\x1B[0m`,

/**红色背景: 41 */
redBG: (str) => `\x1B[41m${str}\x1B[0m`,

/**绿色背景: 42 */
greenBG: (str) => `\x1B[42m${str}\x1B[0m`,

/**黄色背景: 43 */
yellowBG: (str) => `\x1B[43m${str}\x1B[0m`,

/**蓝色背景: 44 */
blueBG: (str) => `\x1B[44m${str}\x1B[0m`,

/**品红背景: 45 */
magentaBG: (str) => `\x1B[45m${str}\x1B[0m`,

/**青色(天蓝)背景: 46 */
cyanBG: (str) => `\x1B[46m${str}\x1B[0m`,

/**白色背景: 47 */
whiteBG: (str) => `\x1B[47m${str}\x1B[0m`,

/////////////////////////////////////
/// 亮色

/**灰色: 90 */
gray: (str) => `\x1B[90m${str}\x1B[0m`,

/**亮红: 91 */
brightRed: (str) => `\x1B[91m${str}\x1B[0m`,

/**亮绿: 92 */
brightGreen: (str) => `\x1B[92m${str}\x1B[0m`,

/**亮黄: 93 */
brightYellow: (str) => `\x1B[93m${str}\x1B[0m`,

/**亮蓝: 94 */
brightBlue: (str) => `\x1B[94m${str}\x1B[0m`,

/**亮品红: 95 */
brightMagenta: (str) => `\x1B[95m${str}\x1B[0m`,

/**亮青(天蓝): 96 */
brightCyan: (str) => `\x1B[96m${str}\x1B[0m`,

/**亮白: 97 */
brightWhite: (str) => `\x1B[97m${str}\x1B[0m`,

/////////////////////////////////////
/// 亮色背景

/**灰色背景: 100 */
grayBG: (str) => `\x1B[100m${str}\x1B[0m`,

/**亮红背景: 101 */
brightRedBG: (str) => `\x1B[101m${str}\x1B[0m`,

/**亮绿背景: 102 */
brightGreenBG: (str) => `\x1B[102m${str}\x1B[0m`,

/**亮黄背景: 103 */
brightYellowBG: (str) => `\x1B[103m${str}\x1B[0m`,

/**亮蓝背景: 104 */
brightBlueBG: (str) => `\x1B[104m${str}\x1B[0m`,

/**亮品红背景: 105 */
brightMagentaBG: (str) => `\x1B[105m${str}\x1B[0m`,

/**亮青(天蓝)背景: 106 */
brightCyanBG: (str) => `\x1B[106m${str}\x1B[0m`,

/**亮白背景: 107 */
brightWhiteBG: (str) => `\x1B[107m${str}\x1B[0m`,

// 自定义样式序号
custom: (code = 0, str = '') => `\x1B[${code}m${str}\x1B[0m`,
};

module.exports = fontStyle;

ES Module风格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
class ModuleChalk {

/////////////////////////////////////
/// 字体样式

/**加粗: 1 */
bold(str: string): string { return `\x1B[1m${str}\x1B[0m` }

/**斜体: 3 */
italic(str: string): string { return `\x1B[3m${str}\x1B[0m`; }

/**下划线: 4 */
underline(str: string): string { return `\x1B[4m${str}\x1B[0m`; }

/**反色: 5 */
reverse(str: string): string { return `\x1B[7m${str}\x1B[0m`; }

/**隐藏: 8 */
hidden(str: string): string { return `\x1B[8m${str}\x1B[0m`; }

/////////////////////////////////////
/// 纯色

/**纯黑: 30 */
black(str: string): string { return `\x1B[30m${str}\x1B[0m`; }

/**红: 31 */
red(str: string): string { return `\x1B[31m${str}\x1B[0m`; }

/**绿: 32 */
green(str: string): string { return `\x1B[32m${str}\x1B[0m`; }

/**黄: 33 */
yellow(str: string): string { return `\x1B[33m${str}\x1B[0m`; }

/**蓝: 34 */
blue(str: string): string { return `\x1B[34m${str}\x1B[0m`; }

/**品红: 35 */
magenta(str: string): string { return `\x1B[35m${str}\x1B[0m`; }

/**青(天蓝): 36 */
cyan(str: string): string { return `\x1B[36m${str}\x1B[0m`; }

/**白: 37 */
white(str: string): string { return `\x1B[37m${str}\x1B[0m`; }

/////////////////////////////////////
/// 背景色

/**黑色背景: 40 */
blackBG(str: string): string { return `\x1B[40m${str}\x1B[0m`; }

/**红色背景: 41 */
redBG(str: string): string { return `\x1B[41m${str}\x1B[0m`; }

/**绿色背景: 42 */
greenBG(str: string): string { return `\x1B[42m${str}\x1B[0m`; }

/**黄色背景: 43 */
yellowBG(str: string): string { return `\x1B[43m${str}\x1B[0m`; }

/**蓝色背景: 44 */
blueBG(str: string): string { return `\x1B[44m${str}\x1B[0m`; }

/**品红背景: 45 */
magentaBG(str: string): string { return `\x1B[45m${str}\x1B[0m`; }

/**青色(天蓝)背景: 46 */
cyanBG(str: string): string { return `\x1B[46m${str}\x1B[0m`; }

/**白色背景: 47 */
whiteBG(str: string): string { return `\x1B[47m${str}\x1B[0m`; }

/////////////////////////////////////
/// 亮色

/**灰色: 90 */
gray(str: string): string { return `\x1B[90m${str}\x1B[0m`; }

/**亮红: 91 */
brightRed(str: string): string { return `\x1B[91m${str}\x1B[0m`; }

/**亮绿: 92 */
brightGreen(str: string): string { return `\x1B[92m${str}\x1B[0m`; }

/**亮黄: 93 */
brightYellow(str: string): string { return `\x1B[93m${str}\x1B[0m`; }

/**亮蓝: 94 */
brightBlue(str: string): string { return `\x1B[94m${str}\x1B[0m`; }

/**亮品红: 95 */
brightMagenta(str: string): string { return `\x1B[95m${str}\x1B[0m`; }

/**亮青(天蓝): 96 */
brightCyan(str: string): string { return `\x1B[96m${str}\x1B[0m`; }

/**亮白: 97 */
brightWhite(str: string): string { return `\x1B[97m${str}\x1B[0m`; }

/////////////////////////////////////
/// 亮色背景

/**灰色背景: 100 */
grayBG(str: string): string { return `\x1B[100m${str}\x1B[0m`; }

/**亮红背景: 101 */
brightRedBG(str: string): string { return `\x1B[101m${str}\x1B[0m`; }

/**亮绿背景: 102 */
brightGreenBG(str: string): string { return `\x1B[102m${str}\x1B[0m`; }

/**亮黄背景: 103 */
brightYellowBG(str: string): string { return `\x1B[103m${str}\x1B[0m`; }

/**亮蓝背景: 104 */
brightBlueBG(str: string): string { return `\x1B[104m${str}\x1B[0m`; }

/**亮品红背景: 105 */
brightMagentaBG(str: string): string { return `\x1B[105m${str}\x1B[0m`; }

/**亮青(天蓝)背景: 106 */
brightCyanBG(str: string): string { return `\x1B[106m${str}\x1B[0m`; }

/**亮白背景: 107 */
brightWhiteBG(str: string): string { return `\x1B[107m${str}\x1B[0m`; }
}

const Chalk = new ModuleChalk();

export default Chalk;