如何更改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行的:
- 粉笔 – https://github.com/sindresorhus/ 粉笔
- 颜色 – https://www.npmjs.org/package/ 颜色
- 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-color和chalk需要更多的打字,但是如果没有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让你自动设置所有控制台方法的标准颜色( log
, warn
, error
和info
)。
与通用颜色库有一个显着的区别 – 它可以全局或本地设置颜色,同时为每个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']);