如何更改node.js的控制台字体颜色?

由于眼睛问题,我必须将控制台背景颜色更改为白色,但字体是灰色的,并且使消息不可读。 我怎样才能改变它?

在运行node.js应用程序时,您可以在下面find文本的颜色引用:

console.log('\x1b[36m%s\x1b[0m', 'I am cyan'); //cyan console.log('\x1b[33m%s\x1b[0m', stringToMakeYellow); //yellow 

注意%s是string(第二个参数)被注入的地方。 \x1b[0m重置terminal颜色,因此在此之后,它不再继续成为所选的颜色。

颜色参考

 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" 

编辑:

例如, \x1b[31m是一个转义序列 ,将被您的terminal拦截并指示它切换到红色。 实际上, \x1b不可打印控制字符 escape的代码。 仅处理颜色和样式的转义序列也被称为ANSI转义代码,并且是标准化的,所以它们(应该)可以在任何平台上工作。

在Node.js中改变控制台字体颜色有几个模块是最stream行的:

  1. 粉笔 – https://github.com/sindresorhus/ 粉笔
  2. 颜色 – https://www.npmjs.org/package/ 颜色
  3. Cli-color – https://www.npmjs.org/package/ cli-color

粉笔用法:

npm安装粉笔

 var chalk = require('chalk'); console.log(chalk.red('Text in red')); 

颜色用法:

npm安装颜色

 var colors = require('colors/safe'); // does not alter string prototype console.log(colors.red('This String Will Display RED')); 

有几种颜色可供select,如粗体斜体文本格式。

许多人已经注意到他们不赞成在改变 string原型的 颜色 ,如果你喜欢你的原型留下,你会想要使用cli-color粉笔

cli-color用法:

npm安装cli-color

 var clc = require('cli-color'); console.log(clc.red('Text in red')); 

cli-colorchalk需要更多的打字,但是如果没有String原型添加,你会得到类似的结果(颜色)。 两者都支持各种颜色,格式(粗体/斜体等)并进行unit testing

拿你的select。

如果你想直接改变颜色而不用模块尝试

 console.log('\x1b[36m', 'sometext' ,'\x1b[0m'); 

首先'\ x1b [36m'将颜色更改为“36”,然后返回到terminal颜色“0”。

给输出上色你可以使用那里的例子:
https://help.ubuntu.com/community/CustomizingBashPrompt

也是nodeJs的要点

例如,如果你想要红色文本的一部分,只需使用console.log:

 "\033[31m this will be red \033[91m and this will be normal" 

基于此,我已经为Node.js创build了“colog”扩展。 你可以使用下面的方法安装

 npm install colog 

Repo和npm: https : //github.com/dariuszp/colog

根据本文档 ,您可以根据输出的数据types更改颜色:

 // 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以重置为默认的前景色。

所以我不喜欢的一件事是这些东西有多黑。 特别是date。 继续并在控制台中尝试new Date() 。 黑色的深洋红色真的很难看。 让我们改为浅洋红色。

 // 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'; 

现在,当您尝试new Date() ,输出更具可读性。

如果您想在启动节点时自动设置颜色,请创build一个启动repl的脚本,如下所示:

 // 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({}); 

保存此文件(例如, init.js ),然后运行node.exe init.js 它将设置颜色并启动node.js命令提示符。

(感谢loganfsmyth在这个答案的repl想法。)

Sindre Sorhus的这个图书馆目前是最好的:

粉笔

  • 高性能
  • 不扩展String.prototype
  • 富有performance力的API
  • 能够嵌套样式
  • 清洁和专注
  • 自动检测颜色支持
  • 积极维护
  • 由5500+模块使用

这是控制台中可用颜色(背景,前景)的列表,包含可用的操作(复位,反转,…)。

 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" } }; 

使用它如下:

  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 

你也可以安装:

 npm install console-info console-warn console-error --save-dev 

IT会给你一个更接近客户端控制台的输出:

在这里输入图像说明

对于一个stream行的替代颜色 ,不要混淆了String对象的内置方法,我build议检查一下cli-color 。

包括颜色和可链式样式,如粗体,斜体和下划线。

有关此类别中各种模块的比较,请参见此处 。

没有图书馆没有简单的复杂性:

 console.log(red('Error!')); function red(s) { return '\033[31m' + s; } 

我重载了控制台方法。

 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"); 

输出是。 在这里输入图像说明

有两种方法可以查看当前Node.js控制台的颜色变化。

一种是通过通用库来装饰带有彩色标签的文本string,然后通过标准的console.log输出。

今天的顶级图书馆:

  • 粉笔
  • 颜色
  • CLI色

另一种方式 – 修补现有的控制台方法。 一个这样的库 – manakin让你自动设置所有控制台方法的标准颜色( logwarnerrorinfo )。

与通用颜色库有一个显着的区别 – 它可以全局或本地设置颜色,同时为每个Node.js控制台方法保持一致的语法和输出格式,然后使用该方法,无需指定颜色,因为它们都是自动设置的。

由于眼睛问题,我必须将控制台背景颜色更改为白色,但字体是灰色的,并且使消息不可读。 我怎样才能改变它?

特别是对于你的问题,这里是最简单的解决scheme:

 var con = require('manakin').global; con.log.color = 30; // Use black color for console.log 

它将为您的应用程序中的每个console.log调用设置黑色。 查看更多颜色代码 。

manakin使用的默认颜色:

在这里输入图像说明

我写的npm脚本不能有依赖关系:

 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')}`) 

漆控制台

简单的可着色日志。 支持检查对象和单行更新这个包只是重绘控制台。

安装

 npm install paint-console 

用法

 require('paint-console'); console.info('console.info();'); console.warn('console.warn();'); console.error('console.error();'); console.log('console.log();'); 

演示

遇到这个问题,并希望使用一些颜色的标准输出没有任何依赖。 这里结合了其他一些很好的答案。

这是我得到的。 (需要节点v4或更高)

 // 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() 

只需要该文件,然后像这样使用它:

 const colors = require('./colors') console.log(colors.green("I'm green!")) 

预定的颜色代码在这里可用

我不希望任何依赖这个,只有这些在OS X上工作。所有其他来自这里的答案样本给了我Octal literal错误。

 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-colorful-text-in-terminal-when-run-node-js-script

你也可以使用色彩作品 。

用法:

 var cw = require('colorworks').create(); console.info(cw.compile('[[red|Red message with a [[yellow|yellow]] word.]]')); 

为了让生活更轻松,你也可以用它做一个function。

 function say(msg) { console.info(cw.compile(msg)); } 

现在你可以这样做

 say(`[[yellow|Time spent: [[green|${time}]]ms.]]`); 

我创build了自己的模块StyleMe 。 我做到了这一点,所以我可以做很多小打字。 例:

 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. 

它也可以嵌套:

 console.log("This is normal red{this is red blu{this is blue} back to red}".styleMe()) 

或者,如果您不想扩展string原型,则可以只使用其他三个选项中的任何一个:

 console.log(styleme.red("a string")) console.log("Hello, this is yellow text".yellow().end()) console.log(styleme.style("some text","red,bbl")) 

Coolors

这是非常好的使用或扩展。 你可以简单地使用:

 var coolors = require('coolors'); console.log(coolors('My cool console log', 'red')); 

或者用configuration:

 var coolors = require('coolors'); console.log(coolors('My cool console log', { text: 'yellow', background: 'red', bold: true, underline: true, inverse: true, strikethrough: true })); 

而且看起来真的很有趣:

 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')); 

查看Coolors模块

2017年:

简单的方法,添加时间colord到消息,你不需要改变你的代码,使用保持你的console.log('味精')或console.err('错误')

 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中,你可以简单地使用颜色代码:

 var sys = require('sys'); process.stdout.write("x1B[31m" + your_message_in_red + "\x1B[0m\r\n"); 

节点colorify

提供打印彩色文本的function,还可以进行粗体,眨眼等文本格式。

如果您正在使用Windows CMD,然后转到terminal属性/颜色(CMD左上angular),然后重新定义冒犯性颜色的RGB值。 就我而言,我相信这是从左边开始的第五个颜色方块,我改为(222,222,222)。 如果当前选定的单选button显示“屏幕文本”或“屏幕背景”,则只需重新定义特定的“系统”颜色即可。 一旦你改变了颜色,不要忘记在点击OK之前select背景或文字的首选颜色。

改变之后,所有这些来自节点(我的情况下,Ember)的红色消息都清晰可见。

节点7.xx还支持:

 console.log("This is red text"['red'], "This is green text"['green']); console.log("Here's a bold header"['bold']);