How to change node.js's console font color?
由于眼睛的问题,我不得不将控制台的背景色改为白色,但是字体是灰色的,它会使消息不可读。我怎样才能改变它?
下面是运行node.js应用程序时要命令的文本的颜色引用:
1 2 | console.log('\x1b[36m%s\x1b[0m', 'I am cyan'); //cyan console.log('\x1b[33m%s\x1b[0m', stringToMakeYellow); //yellow |
。
注:
颜色参考
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 | Reset ="\x1b[0m" Bright ="\x1b[1m" Dim ="\x1b[2m" Underscore ="\x1b[4m" Blink ="\x1b[5m" Reverse ="\x1b[7m" Hidden ="\x1b[8m" FgBlack ="\x1b[30m" FgRed ="\x1b[31m" FgGreen ="\x1b[32m" FgYellow ="\x1b[33m" FgBlue ="\x1b[34m" FgMagenta ="\x1b[35m" FgCyan ="\x1b[36m" FgWhite ="\x1b[37m" BgBlack ="\x1b[40m" BgRed ="\x1b[41m" BgGreen ="\x1b[42m" BgYellow ="\x1b[43m" BgBlue ="\x1b[44m" BgMagenta ="\x1b[45m" BgCyan ="\x1b[46m" BgWhite ="\x1b[47m" |
编辑:
例如,
维基百科很好地比较了不同终端显示颜色的方式。https://en.wikipedia.org/wiki/ansi_escape_code颜色
node.js中有多个可用于格式化控制台文本的包。最受欢迎的是:
chalk 。- 江户十一〔一〕号
- 埃多克斯1〔2〕
用途:
粉笔:
1 2 | const chalk = require('chalk'); console.log(chalk.red('Text in red')); |
CLI颜色:
1 2 | const clc = require('cli-color'); console.log(clc.red('Text in red')); |
号
颜色:
1 2 | const colors = require('colors'); console.log('Text in red'.red); |
许多人注意到他们不赞成
1 2 | const colors = require('colors/safe'); console.log(colors.red('Text in red')); |
。
如果您想直接更改颜色而不使用模块,请尝试
1 | console.log('\x1b[36m', 'sometext' ,'\x1b[0m'); |
号
首先'x1b[36m'将颜色更改为"36",然后返回终端颜色"0"。
这是一个ANSI颜色代码列表
要对输出进行着色,可以使用以下示例:https://help.ubuntu.com/community/customizingbashsprompt
也是点头的要点
例如,如果希望部分文本为红色,只需使用以下命令执行console.log:
1 | "\033[31m this will be red \033[91m and this will be normal" |
基于此,我为node.js创建了"colog"扩展。您可以使用以下方法安装:
1 | npm install colog |
。
回购和NPM:网址:https://github.com/dariuszp/colog
根据此文档,您可以根据输出的数据类型更改颜色:
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 | // you'll need the util module var util = require('util'); // let's look at the defaults: util.inspect.styles { special: 'cyan', number: 'yellow', boolean: 'yellow', undefined: 'grey', null: 'bold', string: 'green', date: 'magenta', regexp: 'red' } // what are the predefined colors? util.inspect.colors { bold: [ 1, 22 ], italic: [ 3, 23 ], underline: [ 4, 24 ], inverse: [ 7, 27 ], white: [ 37, 39 ], grey: [ 90, 39 ], black: [ 30, 39 ], blue: [ 34, 39 ], cyan: [ 36, 39 ], green: [ 32, 39 ], magenta: [ 35, 39 ], red: [ 31, 39 ], yellow: [ 33, 39 ] } |
。
这些代码似乎是ANSI SGR转义代码,其中第一个数字是输出之前要发出的代码,第二个数字是输出之后要发出的代码。所以,如果我们看看维基百科上的ansi sgr代码图表,你会发现大多数代码都是从一个数字30-37开始设置前景色,以39结束,然后重置为默认前景色。
所以有一件事我不喜欢,那就是其中一些有多暗。尤其是日期。继续在控制台中尝试
1 2 3 4 5 | // first define a new color util.inspect.colors.lightmagenta = [95,39]; // now assign it to the output for date types util.inspect.styles.date = 'lightmagenta'; |
现在,当您尝试
如果要在启动节点时自动设置颜色,请创建一个启动repl的脚本,如下所示:
1 2 3 4 5 6 7 | // set your colors however desired var util = require('util'); util.inspect.colors.lightmagenta = [95,39]; util.inspect.styles.date = 'lightmagenta'; // start the repl require('repl').start({}); |
。
保存此文件(例如,
(多亏了这个答案中关于回复想法的罗根夫神话。)
这是控制台中可用颜色(背景、前景)的列表,具有可用操作(重置、反转等)。
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 | const colors = { Reset:"\x1b[0m", Bright:"\x1b[1m", Dim:"\x1b[2m", Underscore:"\x1b[4m", Blink:"\x1b[5m", Reverse:"\x1b[7m", Hidden:"\x1b[8m", fg: { Black:"\x1b[30m", Red:"\x1b[31m", Green:"\x1b[32m", Yellow:"\x1b[33m", Blue:"\x1b[34m", Magenta:"\x1b[35m", Cyan:"\x1b[36m", White:"\x1b[37m", Crimson:"\x1b[38m" //??????? }, bg: { Black:"\x1b[40m", Red:"\x1b[41m", Green:"\x1b[42m", Yellow:"\x1b[43m", Blue:"\x1b[44m", Magenta:"\x1b[45m", Cyan:"\x1b[46m", White:"\x1b[47m", Crimson:"\x1b[48m" } }; |
。
使用方法如下:
1 2 | console.log(colors.bg.Blue, colors.fg.White ,"I am white message with blue background", colors.Reset) ; //don't forget"colors.Reset" to stop this color and return back to the default color |
。
您还可以安装:
1 | npm install console-info console-warn console-error --save-dev |
它将为您提供一个更接近客户端控制台的输出:
氧化镁
Sindre Sorhus的这座图书馆是目前最好的:
粉笔- 高性能
- 不扩展
String.prototype 。 - 表达型API
- 嵌套样式的能力
- 干净集中
- 自动检测颜色支持
- 积极维护
- 5500+模块使用
。
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 | Reset:"\x1b[0m" Bright:"\x1b[1m" Dim:"\x1b[2m" Underscore:"\x1b[4m" Blink:"\x1b[5m" Reverse:"\x1b[7m" Hidden:"\x1b[8m" FgBlack:"\x1b[30m" FgRed:"\x1b[31m" FgGreen:"\x1b[32m" FgYellow:"\x1b[33m" FgBlue:"\x1b[34m" FgMagenta:"\x1b[35m" FgCyan:"\x1b[36m" FgWhite:"\x1b[37m" BgBlack:"\x1b[40m" BgRed:"\x1b[41m" BgGreen:"\x1b[42m" BgYellow:"\x1b[43m" BgBlue:"\x1b[44m" BgMagenta:"\x1b[45m" BgCyan:"\x1b[46m" BgWhite:"\x1b[47m" |
例如,如果您希望有一个暗红色的文本和蓝色的背景,您可以在javascript中这样做:
1 | console.log("\x1b[2m","\x1b[31m","\x1b[44m","Sample Text","\x1b[0m"); |
号
颜色和效果的顺序似乎没有那么重要,但请始终记住在结束时重置颜色和效果。
对于不干扰字符串对象内置方法的颜色的流行替代方法,我建议签出cli color。
包括颜色和可链接样式,如粗体、斜体和下划线。
有关此类别中各种模块的比较,请参阅此处。
没有图书馆,没有复杂的事情,只是简单的:
1 2 3 4 5 | console.log(red('Error!')); function red(s) { return '\033[31m' + s; } |
我为没有依赖项的NPM脚本编写了一个方便的一行程序:
1 2 3 4 5 6 7 8 | const { r, g, b, w, c, m, y, k } = [ ['r', 1], ['g', 2], ['b', 4], ['w', 7], ['c', 6], ['m', 5], ['y', 3], ['k', 0], ].reduce((cols, col) => ({ ...cols, [col[0]]: f => `\x1b[3${col[1]}m${f}\x1b[0m` }), {}) console.log(`${g('I')} love ${r('Italy')}`) |
号
现在有两种方法可以查看更改node.js控制台的颜色。
一种是通过通用库来修饰带有颜色标签的文本字符串,然后通过标准的
今天的顶级图书馆:
- 粉笔
- 颜色
- CLI颜色
另一种方法是修补现有的控制台方法。一个这样的库-Manakin允许您为所有控制台方法(
与通用颜色库的一个显著区别是,它可以全局或本地设置颜色,同时为每个node.js控制台方法保持一致的语法和输出格式,然后使用这些方法而不必指定颜色,因为它们都是自动设置的。
I had to change the console background color to white because of eye problems, but the font is gray colored and it makes the messages unreadable. How can I change it?
号
具体来说,以下是最简单的解决方案:
1 2 | var con = require('manakin').global; con.log.color = 30; // Use black color for console.log |
。
它将为应用程序中的每个
Manakin使用的默认颜色:
。
我重载了控制台方法。
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 | var colors={ Reset:"\x1b[0m", Red:"\x1b[31m", Green:"\x1b[32m", Yellow:"\x1b[33m" }; var infoLog = console.info; var logLog = console.log; var errorLog = console.error; var warnLog = console.warn; console.info= function(args) { var copyArgs = Array.prototype.slice.call(arguments); copyArgs.unshift(colors.Green); copyArgs.push(colors.Reset); infoLog.apply(null,copyArgs); }; console.warn= function(args) { var copyArgs = Array.prototype.slice.call(arguments); copyArgs.unshift(colors.Yellow); copyArgs.push(colors.Reset); warnLog.apply(null,copyArgs); }; console.error= function(args) { var copyArgs = Array.prototype.slice.call(arguments); copyArgs.unshift(colors.Red); copyArgs.push(colors.Reset); errorLog.apply(null,copyArgs); }; // examples console.info("Numeros",1,2,3); console.warn("pares",2,4,6); console.error("reiniciandooo"); |
号
输出为。氧化镁
我不想对这个有任何依赖性,只有这些对我在OSX上有效。这里答案的所有其他样本都给了我
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 | Reset ="\x1b[0m" Bright ="\x1b[1m" Dim ="\x1b[2m" Underscore ="\x1b[4m" Blink ="\x1b[5m" Reverse ="\x1b[7m" Hidden ="\x1b[8m" FgBlack ="\x1b[30m" FgRed ="\x1b[31m" FgGreen ="\x1b[32m" FgYellow ="\x1b[33m" FgBlue ="\x1b[34m" FgMagenta ="\x1b[35m" FgCyan ="\x1b[36m" FgWhite ="\x1b[37m" BgBlack ="\x1b[40m" BgRed ="\x1b[41m" BgGreen ="\x1b[42m" BgYellow ="\x1b[43m" BgBlue ="\x1b[44m" BgMagenta ="\x1b[45m" BgCyan ="\x1b[46m" BgWhite ="\x1b[47m" |
来源:https://coderwall.com/p/yphywg/printing-colorive-text-in-terminal-when-run-node-js-script
遇到这个问题,想在stdout上使用一些颜色,而不需要任何依赖。这结合了其他一些很好的答案。
这就是我要的。(需要节点v4或更高版本)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // colors.js const util = require('util') function colorize (color, text) { const codes = util.inspect.colors[color] return `\x1b[${codes[0]}m${text}\x1b[${codes[1]}m` } function colors () { let returnValue = {} Object.keys(util.inspect.colors).forEach((color) => { returnValue[color] = (text) => colorize(color, text) }) return returnValue } module.exports = colors() |
只需要文件,然后按如下方式使用:
1 2 | const colors = require('./colors') console.log(colors.green("I'm green!")) |
号
此处提供预定义的颜色代码
油漆控制台
简单的可着色原木。支持检查对象和单行更新这个包裹只是重新粉刷控制台。
安装
1 | npm install paint-console |
号
使用
1 2 3 4 5 6 | require('paint-console'); console.info('console.info();'); console.warn('console.warn();'); console.error('console.error();'); console.log('console.log();'); |
号
演示
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 | var colorSet = { Reset:"\x1b[0m", Red:"\x1b[31m", Green:"\x1b[32m", Yellow:"\x1b[33m", Blue:"\x1b[34m", Magenta:"\x1b[35m" }; var funcNames = ["info","log","warn","error"]; var colors = [colorSet.Green, colorSet.Blue, colorSet.Yellow, colorSet.Red]; for (var i = 0; i < funcNames.length; i++) { let funcName = funcNames[i]; let color = colors[i]; let oldFunc = console[funcName]; console[funcName] = function () { var args = Array.prototype.slice.call(arguments); if (args.length) args = [color + args[0]].concat(args.slice(1), colorSet.Reset); oldFunc.apply(null, args); }; } // Test: console.info("Info is green."); console.log("Log is blue."); console.warn("Warn is orange."); console.error("Error is red."); console.info("--------------------"); console.info("Formatting works as well. The number = %d", 123); |
你也可以使用色彩。
用途:
1 2 | var cw = require('colorworks').create(); console.info(cw.compile('[[red|Red message with a [[yellow|yellow]] word.]]')); |
号
为了让生活更容易,你也可以用它来做一个功能。
1 2 3 | function say(msg) { console.info(cw.compile(msg)); } |
号
现在你可以喜欢了
1 | say(`[[yellow|Time spent: [[green|${time}]]ms.]]`); |
号
我创建了自己的模块,StyleMe。我做了它,这样我可以做很多与小打字。例子:
1 2 3 4 | var StyleMe = require('styleme'); StyleMe.extend() // extend the string prototype console.log("gre{Hello} blu{world}!".styleMe()) // Logs hello world! with 'hello' being green, and 'world' being blue with '!' being normal. |
。
它也可以嵌套:
1 | console.log("This is normal red{this is red blu{this is blue} back to red}".styleMe()) |
号
或者,如果您不想扩展字符串原型,您可以选择其他3个选项中的任意一个:
1 2 3 | console.log(styleme.red("a string")) console.log("Hello, this is yellow text".yellow().end()) console.log(styleme.style("some text","red,bbl")) |
号
冷却器
它非常适合使用或扩展。您可以简单地使用:
1 2 | var coolors = require('coolors'); console.log(coolors('My cool console log', 'red')); |
或配置:
1 2 3 4 5 6 7 8 9 | var coolors = require('coolors'); console.log(coolors('My cool console log', { text: 'yellow', background: 'red', bold: true, underline: true, inverse: true, strikethrough: true })); |
。
似乎很有趣的是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | var coolors = require('coolors'); function rainbowLog(msg){ var colorsText = coolors.availableStyles().text; var rainbowColors = colorsText.splice(3); var lengthRainbowColors = rainbowColors.length; var msgInLetters = msg.split(''); var rainbowEndText = ''; var i = 0; msgInLetters.forEach(function(letter){ if(letter != ' '){ if(i === lengthRainbowColors) i = 0; rainbowEndText += coolors(letter, rainbowColors[i]); i++; }else{ rainbowEndText += ' '; } }); return rainbowEndText; } coolors.addPlugin('rainbow', rainbowLog); console.log(coolorsExtended('This its a creative example extending core with a cool rainbown style', 'rainbown')); |
号
查看冷却模块
节点着色
提供打印彩色文本以及设置粗体、闪烁等文本格式的功能。
2017:
简单的方法,在消息中添加时间颜色,您不需要更改代码,使用keep your console.log('msg')或console.err('err or')
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | var clc = require("cli-color"); var mapping = { log: clc.blue, warn: clc.yellow, error: clc.red }; ["log","warn","error"].forEach(function(method) { var oldMethod = console[method].bind(console); console[method] = function() { oldMethod.apply( console, [mapping[method](new Date().toISOString())] .concat(arguments) ); }; }); |
号
氧化镁
在Ubuntu中,您可以简单地使用颜色代码:
1 2 3 4 | var sys = require('sys'); process.stdout.write("x1B[31m" + your_message_in_red +"\x1B[0m "); |
这是Windows10(可能是7)的一种方法,它改变了Cmd、NPM终端本身的颜色方案(主题),而不仅仅是特定应用程序的控制台输出。
我找到了正在工作的Windows插件颜色工具,它大概是在Windows保护伞下开发的。链接中提供了说明。
我在系统环境路径变量中添加了colortool目录,现在只要启动终端(nodejs command prompt,cmd),就可以使用它。
记录器/index.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 | const colors = { Reset :"\x1b[0m", Bright :"\x1b[1m", Dim :"\x1b[2m", Underscore :"\x1b[4m", Blink :"\x1b[5m", Reverse :"\x1b[7m", Hidden :"\x1b[8m", FgBlack :"\x1b[30m", FgRed :"\x1b[31m", FgGreen :"\x1b[32m", FgYellow :"\x1b[33m", FgBlue :"\x1b[34m", FgMagenta :"\x1b[35m", FgCyan :"\x1b[36m", FgWhite :"\x1b[37m", BgBlack :"\x1b[40m", BgRed :"\x1b[41m", BgGreen :"\x1b[42m", BgYellow :"\x1b[43m", BgBlue :"\x1b[44m", BgMagenta :"\x1b[45m", BgCyan :"\x1b[46m", BgWhite :"\x1b[47m", }; module.exports = () => { Object.keys(colors).forEach(key => { console['log' + key] = (strg) => { if(typeof strg === 'object') strg = JSON.stringify(strg, null, 4); return console.log(colors[key]+strg+'\x1b[0m'); } }); } |
。
在你的app.js中
1 | require('./logger')(); |
然后像这样使用:
1 | console.logBgGreen(" grüner Hintergrund") |
。
我很喜欢@daniel的答案,但是console.log color函数的工作方式与普通console.log不同。我做了一些更改,现在新函数的所有参数都将传递到console.log(以及颜色代码)。
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 | const _colors = { Reset :"\x1b[0m", Bright :"\x1b[1m", Dim :"\x1b[2m", Underscore :"\x1b[4m", Blink :"\x1b[5m", Reverse :"\x1b[7m", Hidden :"\x1b[8m", FgBlack :"\x1b[30m", FgRed :"\x1b[31m", FgGreen :"\x1b[32m", FgYellow :"\x1b[33m", FgBlue :"\x1b[34m", FgMagenta :"\x1b[35m", FgCyan :"\x1b[36m", FgWhite :"\x1b[37m", BgBlack :"\x1b[40m", BgRed :"\x1b[41m", BgGreen :"\x1b[42m", BgYellow :"\x1b[43m", BgBlue :"\x1b[44m", BgMagenta :"\x1b[45m", BgCyan :"\x1b[46m", BgWhite :"\x1b[47m", }; const enableColorLogging = function(){ Object.keys(_colors).forEach(key => { console['log' + key] = function(){ return console.log(_colors[key], ...arguments, _colors.Reset); } }); } |
。
如果您使用的是windows cmd,则转到终端属性/颜色(cmd左上角),然后重新定义冒犯性颜色的RGB值。在我的例子中,我认为这是第五个颜色的正方形,从左边改为(22222222)。当您重新定义特定的"系统"颜色时,当前选定的单选按钮是否显示屏幕文本或屏幕背景并不重要。一旦更改了颜色,请不要忘记在单击"确定"之前为背景或文本选择回首选颜色。
更改之后,所有来自节点的红色消息(在我的例子中是余烬)都清晰可见。
1 2 3 | var to_rgb = function (_text, _r, _g, _b) { return"\x1b[38;2;" + _r +";" + _g +";" + _b +"m" + _text +"\x1b[0m"; }; |
此代码有助于设置前景颜色:x1b[38;2;r;g;bm
这可能在某个地方不起作用