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'));
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);
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
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())
或者,如果您不想扩展字符串原型,您可以选择其他3个选项中的任何一个:
console.log(styleme.red("a string"))
console.log("Hello, this is yellow text".yellow().end())
console.log(styleme.style("some text","red,bbl"))
// 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() 时,输出更具可读性 .
如果您想在启动节点时自动设置颜色,请创建一个启动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({});
28 回答
在ubuntu中,您只需使用颜色代码:
在Node.js中有一些用于更改控制台字体颜色的模块,最受欢迎的是:
粉笔 - https://github.com/chalk/chalk
颜色 - https://www.npmjs.org/package/colors
Cli-color - https://www.npmjs.org/package/cli-color
chalk用法:
colors用法:
有几种颜色可供选择,以及文本格式如 Bold 和Italic .
很多人都注意到他们在 Colors 改变了 String prototype ,如果你更喜欢单独使用你的原型,你会想要使用cli-color或chalk
cli-color用法:
cli-color和chalk都需要更多的输入,但是你会得到类似的结果(到颜色)而不添加String原型 . 两者都支持很好的颜色范围,格式(粗体/斜体等)并且有 unit tests .
随便挑选 .
这是Windows 10的一种方法(可能是7),它改变了cmd,npm终端本身的颜色方案(主题),而不仅仅是特定应用程序的控制台输出 .
我找到了工作的Windows插件 - Color Tool,它可能是在Windows下开发的 . 有关说明,请访问link .
我将colortool目录添加到系统环境路径变量中,现在每当我启动终端(NodeJs命令提示符,cmd)时它都可用 .
此代码有助于设置前景色:\ x1b [38; 2; R; G; Bm
这可能无法在某处工作
今天有两种方法可以查看更改Node.js控制台的颜色 .
一种是通过通用库来装饰带有颜色标签的文本字符串,然后通过标准
console.log
输出 .今天的顶级图书馆:
chalk
colors
cli-color
另一种方式 - 修补现有的控制台方法 . 一个这样的库 - manakin允许您自动为所有控制台方法设置标准颜色(
log
,warn
,error
和info
) .与通用颜色库的一个显着区别 - 它可以全局或本地设置颜色,同时为每个Node.js控制台方法保持一致的语法和输出格式,然后您可以使用它而无需指定颜色,因为它们都是自动设置的 .
特别针对您的问题,这是最简单的解决方案:
它将为您的应用程序中的每个
console.log
调用设置黑色 . 见more color codes .Default colors as used by manakin:
如果你想直接改变颜色而不用模块试试
首先'\ x1b [36m'将颜色更改为“36”然后再返回到终端颜色“0” .
Here's a list of ANSI color codes
我重载了控制台方法 .
输出是 .
node-colorify
提供以彩色打印文本的功能,也可以进行粗体,闪烁等文本格式化 .
Coolors
它非常适合使用或扩展 . 你可以简单地使用:
或配置:
扩展似乎很有趣:
View Coolors module
在运行node.js应用程序时,您可以在下面找到要命令的文本颜色参考:
注意
%s
是字符串(第二个参数)被注入的位置 .\x1b[0m
重置终端颜色,使其在此之后不再继续为所选颜色 .Colors reference
编辑:
例如,
\x1b[31m
是一个转义序列,将被终端拦截并指示它切换为红色 . 实际上,\x1b
是 non-printable control characterescape
的代码 . 仅处理颜色和样式的转义序列也称为 ANSI escape code 并且是标准化的,因此它们(应该)可以在任何平台上工作 .维基百科对不同终端如何显示颜色进行了很好的比较https://en.wikipedia.org/wiki/ANSI_escape_code#Colors
对于colors的流行替代方案,它不会弄乱String对象的内置方法,我建议检查cli-color .
包括颜色和可链接样式,如粗体,斜体和下划线 .
有关此类别中各种模块的比较,请参阅here .
Logger / index.js
在你的app.js
然后使用它像:
你也可以使用colorworks .
用法:
为了让生活更轻松,您还可以使用它来实现功能 .
现在你可以这样做
2017年:
简单的方法,在消息中添加时间colord,您不需要更改代码,使用keep your console.log('msg')或console.err('error')
例如,如果你想要一个带有蓝色背景的Dim,Red文本,你可以在Javascript中这样做:
颜色和效果的顺序似乎并不那么重要,但始终要记住在最后重置颜色和效果 .
我不希望任何依赖这个,只有这些在OS X上为我工作 . 所有其他答案在这里给我
Octal literal
错误 .来源:https://coderwall.com/p/yphywg/printing-colorful-text-in-terminal-when-run-node-js-script
遇到这个问题,想在stdout上使用一些颜色,没有任何依赖 . 这里结合了其他一些很好的答案 .
这就是我所拥有的 . (需要节点v4或更高版本)
只需要文件,然后像这样使用它:
预定义的颜色代码可用here
这是可用操作(重置,反向,...)的控制台中可用颜色(背景,前景)的列表 .
使用方法如下:
你也可以安装:
IT将为您提供更接近客户端控制台的输出:
我创建了自己的模块,StyleMe . 我做了所以我可以做很少的打字 . 例:
它也可以嵌套:
或者,如果您不想扩展字符串原型,您可以选择其他3个选项中的任何一个:
我真的很喜欢@Daniel的答案,但是console.log 函数与常规console.log的工作方式不同 . 我做了一些更改,现在新函数的所有参数都将传递给console.log(以及颜色代码) .
我为npm脚本写的一个方便的单行程,它不能有依赖项:
为输出着色你可以使用那里的例子:
https://help.ubuntu.com/community/CustomizingBashPrompt
也是Gist for nodeJs
例如,如果您想要部分文本为红色,请使用以下命令执行console.log:
基于此我为Node.js创建了“colog”扩展 . 您可以使用以下方法安装它
回购和npm:https://github.com/dariuszp/colog
paint-console
简单的可着色日志 . 支持检查对象和单行更新这个包只是重绘控制台 .
install
usage
demo
没有图书馆没有并发症很简单:
根据this documentation,您可以根据输出的数据类型更改颜色:
这些似乎是ANSI SGR转义码,其中第一个数字是在输出之前发出的代码,第二个数字是之后发出的代码 . 因此,如果我们查看the chart of ANSI SGR codes on Wikipedia,您会看到其中大多数以30-37开头设置前景色,并以39结束以重置为默认前景色 .
所以我不喜欢的一件事是它们有多暗 . 特别是约会 . 继续,在控制台中尝试
new Date()
. 黑色的深洋红色真的很难读 . 让我们改为浅红色 .现在当你尝试
new Date()
时,输出更具可读性 .如果您想在启动节点时自动设置颜色,请创建一个启动repl的脚本,如下所示:
保存此文件(例如,
init.js
),然后运行node.exe init.js
. 它将设置颜色并启动node.js命令提示符 .(感谢loganfsmyth在this answer中的repl想法 . )
Sindre Sorhus的这个图书馆目前是最好的:
粉笔
高效率
不延长
String.prototype
富有表现力的API
能够嵌套样式
清洁和专注
自动检测颜色支持
积极维护
由5500模块使用
如果您使用的是Windows CMD,请转到终端属性/颜色(CMD左上角),然后重新定义令人反感的颜色的RGB值 . 在我的情况下,我相信它是左边的第五个颜色方块,我改为(222,222,222) . 当前选择的单选按钮显示屏幕文本或屏幕背景并不重要,因为您只需重新定义该特定的“系统”颜色 . 更改颜色后,请不要忘记在单击“确定”之前选择背景或文本的首选颜色 .
在更改之后,来自Node的所有这些带红色的消息(在我的情况下为Ember)清晰可见 .