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


569

由于眼睛的问题,我不得不将控制台背景色更改为白色,但是字体为灰色,这使消息不可读。我该如何更改?


4
在您用来更改背景颜色的位置,您可以更改其他颜色。
Dan D.

@hippietrail你们找到了更好的解决方案,还是可以接受这个问题的答案之一?
nelsonic

您如何在纯Node.js中做到这一点?没有颜色或任何其他包装。
哥斯达黎加

1
我有同样的问题。我怀疑@Viclib(我也是)正在使用Windows,这就是为什么更改终端颜色的说明是一个陌生的概念。Windows命令提示符允许更改2种前景色和2种背景色。节点使用Windows命令提示符无法定义的其他颜色。
格雷格·伍兹

2
后来我发现我关于Windows命令提示符颜色如何工作的思维模型是完全错误的。我错误地认为(由于UI糟糕)您只能更改前景色和背景色。错了 控制台应用程序可以使用所有16​​种颜色,至关重要的是为所有16种颜色选择明智的颜色,并且始终使用颜色图块1作为背景(而使用图块9作为“弹出背景”)。我写了一篇博客文章(确实是一件罕见的事情),这对我来说真是一个启示。gregwoods.co.uk/2015/04/…
Greg Woods

Answers:


1147

在下面,您可以找到运行node.js应用程序时命令的文本颜色参考:

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

请注意,%s是在字符串(第二个参数)中插入的位置。\x1b[0m重置终端颜色,以便在此之后不再继续成为所选颜色。

颜色参考

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是一个转义序列,它将被您的终端截获并指示其切换为红色。实际上,\x1b不可打印控制字符 的代码escape。仅处理颜色和样式的转义序列也称为 ANSI转义代码,并且已标准化,因此(应)在任何平台上都可以使用。

Wikipedia很好地比较了不同终端如何显示颜色 https://en.wikipedia.org/wiki/ANSI_escape_code#Colors


42
我接受了这个问题,因为它是最懒惰的一个,它有很多颜色并且没有依赖性。如果您想使用依赖项提供更简单的解决方案,请查看@nelsonic的答案,该答案暗示了非常简单的库。
MaiaVictor

7
您在哪里找到此参考?颜色值中的每个字符是什么意思?
giorgos.nl

10
@ giorgos29cm →见这里。顺便说一句,1;为明亮的颜色添加一个,即“ \ x1b [1; 34m” ==浅蓝色...
Frank Nocke

2
打印到文件而不是控制台时,如何防止显示这些字符?
天空

1
奇怪的是,在Windows 10 Powershell上,黄色变成白色了吗?黄色可以工作;用粉笔做。但是,此答案使我免于添加粉笔作为一些小量日志的依赖项,谢谢!
webelo

318

有多个软件包可用于在Node.js中格式化控制台文本。最受欢迎的是:

用法:


粉笔:

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

CLI颜色:

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

颜色:

const colors = require('colors');
console.log('Text in red'.red);

许多人注意到他们不赞成colors更改String原型。如果您希望保留原型,请使用以下代码:

const colors = require('colors/safe');
console.log(colors.red('Text in red'));

1
它甚至具有对样式的简单轻量级支持!
hippietrail

2
@devundef同意您将方法添加到String对象。可能值得在GitHub上向模块作者提及。和/或建议具有类似简单程度的替代模块/方法。
nelsonic

3
虽然我同意MattJohnson的回答(覆盖util.inpect方法的默认颜色-参见下文)比使用Colors模块更好,但是Colors模块需要零设置并满足绝大多数用户的需求,这只是在更改控制台的颜色.log输出。当然,“与内置消息打交道”是不好的(同意100%),但是任何已部署的代码都不应包含console.log语句,因此,务实一点。@devundef添加到原型中的额外String方法是否会与单元测试混淆?
nelsonic 2014年

8
颜色现在具有了:var colors = require('colors/safe');然后使用colors.red('left string all alone')
Laoujin 2015年

1
发现得很好的@Laoujin-下次随时提出修改建议。我已经在答案中修改了颜色代码示例。
nelsonic 2015年

155

如果您想直接更改颜色而无需模块,请尝试

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

首先\x1b[36m将颜色更改为36,然后再更改为终端颜色0

这是ANSI颜色代码的列表


15
感谢您提到如何重设颜色。
Vasyl Boroviak

25
这是ANSI终端代码,telepathy.freedesktop.org
doc/

1
如何更改字体样式(如粗体红色,斜体绿色)?
uzay95 '16

1
完美的工作方式,并没有弄乱在严格模式下阻止八进制转义码。
Florrie

70

为输出着色您可以在此处使用示例:https :
//help.ubuntu.com/community/CustomizingBashPrompt

也是nodeJs要点

例如,如果您希望部分文本为红色,则只需使用以下命令进行console.log:

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

基于此,我为Node.js创建了“ colog”扩展。您可以使用以下方法安装它:

npm install colog

回购和npm:https : //github.com/dariuszp/colog


1
我相信OP不想以特定的颜色打印特定的文本,但是默认情况下,所有终端输出均以不同的颜色显示,即使在白色背景下也可能是黑色。
cwoebker

然后,他应该更改终端的设置。我确信在Linux上是可能的。不知道Windows。
Dariuszp

14
\033[31m有效,但\033[91m无效。对于Ubuntu Terminal应该是\033[0m
Redsandro 2014年

4
八进制转义似乎没有用:error: octal escape sequences "\033[31mServer ready @ #{app.get('port')}\033[91m" are not allowed
jcollum

4
\033[0m应该用来将文字恢复正常,而不是\033[91m
mollerhoj 2014年

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

使用它如下:

 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将为您提供更接近客户端控制台的输出:

在此处输入图片说明


1
我使用的是相同的并且工作正常,但是由于某种原因,Dim什么也不做?我想要灰色效果,所以我想将白色与暗淡效果一起使用会产生灰色,但只有白色打印而不会暗淡。任何的想法?
Angad

28

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

// 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转义码,其中第一个数字是在输出之前发出的代码,第二个数字是在输出之后发出的代码。因此,如果我们在Wikipedia上查看ANSI SGR代码的图表,您会看到其中大多数以数字30-37开头来设置前景色,并以39结尾来重置为默认前景色。

因此,我不喜欢的一件事是其中有些暗。特别是日期。继续并尝试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(),输出将更具可读性。

如果要在启动节点时自动设置颜色,请创建一个启动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 回答这个想法。)


19

Sindre Sorhus的这个库是目前最好的库:

粉笔

  • 高效能
  • 不扩展 String.prototype
  • 富有表现力的API
  • 嵌套样式的能力
  • 干净而专注
  • 自动检测颜色支持
  • 积极维护
  • 5500+模块使用

2
是的,但这是另一个依赖项
未来之路

18

颜色代码如前所述

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"

例如,如果您要使用带有蓝色背景的Dim,Red文本,则可以在Javascript中执行以下操作:

console.log("\x1b[2m", "\x1b[31m", "\x1b[44m", "Sample Text", "\x1b[0m");

颜色和效果的顺序似乎并不那么重要,但始终记得最后要重置颜色和效果。


@Sergey眨眼也对我不起作用,似乎在Node中不可用
Sv443

@ Sv443但是它可以在屏幕截图上运行:)问题是关于Node的。我认为它仅在Windows控制台中不起作用。您使用什么操作系统?
谢尔盖

2
@Sergey我正在使用Windows,并在CMD和Powershell中进行了尝试,但都无法正常工作
-Sv443

@Sergey我的截图来自MacOS终端应用程序。我相信这是您的shell应用程序应该支持的东西。如果您使用的是Windows,建议您尝试安装Cygwin,然后在bash上进行尝试。我也很好奇这件事。
撕毁

@Shnd我不确定是否相同,但是我在git-bash上尝试了它,但也没有用。
谢尔盖

14

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

编辑: r,g,b,w,c,m,y,k代表红色,绿色,蓝色,白色,青色,洋红色,黄色和黑色(k)


似乎有用,但请您进一步解释吗?侦探模式打开:嗯,rgbwc ...代表红色,绿色,蓝色,白色,青色,品红色,黄色和k?
538ROMEO,

10

对于不干扰String对象的内置方法的流行颜色替代方法,建议您检查cli-color

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

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


10

没有库,没有并发症,很简单:

console.log(red('Error!'));

function red(s) {
    return '\033[31m' + s;
}

1
当您发现它不能以控制台处理对象的方式使用对象,并且不尊重控制台流类型或TTY支持(这会带来更多问题)时,这并不容易。这只是一个hack,它将带来很多问题。
vitaly-t

这就是JSON.stringify的目的
wayofthefuture

10

表情符号

您可以像其他答案中提到的那样为文本使用颜色。

但是您可以改用表情符号!例如,您可以使用您可以使用⚠️警告消息和🛑错误消息。

或者只是将这些笔记本用作颜色:

📕: error message
📙: warning message
📗: ok status message
📘: action message
📓: canceled status message
📔: Or anything you like and want to recognize immediately by color

奖金:

此方法还可以帮助您直接在源代码中快速扫描和查找日志。

但是linux默认的emoji字体默认情况下不是彩色的,您可能首先要使其彩色。


6

目前,有两种方法可以查看Node.js控制台的更改颜色。

一种是通过通用库,这些库可以用颜色标签装饰文本字符串,然后通过standard输出console.log

今天最热门的图书馆:

另一种方式-修补现有的控制台方法。这种库之一- 侏儒鸟让你自动为您所有的控制台方法设置标准颜色(logwarnerrorinfo)。

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

由于眼睛的问题,我不得不将控制台背景色更改为白色,但是字体为灰色,这使消息不可读。我该如何更改?

专门针对您的问题,这是最简单的解决方案:

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

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

manakin使用的默认颜色:

在此处输入图片说明


6

我重载了控制台方法。

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

输出是。

在此处输入图片说明


这不适用于格式化语法。示例:console.info('Hello %s', 'World!')应该显示Hello World!,而不是Hello %s World!
vitaly-t

@ vitaly-t尝试一下:应该可以。
谢尔盖

5

遇到了这个问题,并想在stdout上使用一些颜色而没有任何依赖性。这里结合了其他一些很好的答案。

这就是我所拥有的。(需要节点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!"))

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


1
例如,当重定向到日志文件时将无法正常工作。
vitaly-t

4

油漆控制台

简单的彩色日志。支持检查对象和单行更新。此程序包仅重绘控制台。

安装

npm install paint-console

用法

require('paint-console');

console.info('console.info();');
console.warn('console.warn();');
console.error('console.error();');
console.log('console.log();');

演示


4

我不希望有任何依赖关系,只有这些在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


4

我发现上述答案(https://stackoverflow.com/a/41407246/4808079)非常有用,但不完整。如果您只想给某个颜色着色一次,那应该没问题,但是我认为以可运行的功能形式共享它更适合现实生活中的用例。

const Color = {
  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"
}

function colorString(color, string) {
  return `${color}${string}${Color.Reset}`;
}

function colorStringLog(color, string) {
  console.log(colorString(color, string));
}

像这样使用它:

colorStringLog(Color.FgYellow, "Some Yellow text to console log");

console.log([
  colorString(Color.FgRed, "red"),
  colorString(Color.FgGreen, "green"),
  colorString(Color.FgBlue, "blue"),
].join(", "));

4

logger / index.js

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

require('./logger')();

然后像这样使用它:

console.logBgGreen(" grüner Hintergrund ")

4

这在某种程度上取决于您所使用的平台。最常见的方法是打印ANSI转义序列。举一个简单的例子,这是Blender构建脚本中的一些python代码:

// This is a object for use ANSI escape to color the text in the terminal
const bColors = {
    HEADER    : '\033[95m',
    OKBLUE    : '\033[94m',
    OKGREEN   : '\033[92m',
    WARNING   : '\033[93m',
    FAIL      : '\033[91m',
    ENDC      : '\033[0m', 
    BOLD      : '\033[1m',   
    UNDERLINE : '\033[4m'
}

要使用这样的代码,您可以执行以下操作

console.log(`${bColors.WARNING} My name is sami ${bColors.ENDC}`)

我得到“严格模式下不允许八进制转义序列。”
lucaswxp

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

3

您也可以使用colorworks

用法:

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

为了使生活更轻松,您还可以使用它来实现功能。

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

现在您可以执行以下操作:

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

2

冷却器

它非常适合使用或扩展。您可以简单地使用:

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

或使用配置:

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

查看冷却器模块


例如,当重定向到日志文件时,这在Node.js中将无法正常工作。
vitaly-t

2

我创建了自己的模块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())

或者,如果您不想扩展字符串原型,则可以选择其他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

在ubuntu中,您可以简单地使用颜色代码:

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

为什么未使用require
jhpratt GOFUNDME授权书

是几年前的事。它是stdout写入所必需的,也许现在默认情况下已将其导入。
Kenjy Minamori

喔好吧。我只是好奇,因为它不像sys在任何地方都被使用。但是,如今实际上实际上没有必要了!
jhpratt GOFUNDME授权书

1

节点着色

提供用于打印彩色文本以及进行文本格式化(如加粗,闪烁等)的功能。


3
您提供的链接可能会回答问题。最好将解决方案的关键部分直接放在答案中,以防链接中的页面将来过期。
Kmeixner '16

1

我真的很喜欢@Daniel的答案,但是console.log {color}函数的功能与常规console.log的功能不同。我做了一些更改,现在新功能的所有参数都将传递到console.log(以及颜色代码)。

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

1

2017年:

简单的方法是,在消息中添加时间颜色,无需更改代码,而使用keep console.log('msg')或console.err('error')

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

在此处输入图片说明


0

如果使用的是Windows CMD,请转到终端的“属性/颜色”(CMD左上角),然后重新定义令人讨厌的颜色的RGB值。就我而言,我相信这是左起的第五个颜色方块,我将其更改为(222,222,222)。只要您重新定义特定的“系统”颜色,当前选择的单选按钮是否显示“屏幕文本”或“屏幕背景”都没有关系。更改颜色后,请不要忘记为背景或文本选择首选的颜色,然后再单击“确定”。

更改后,所有这些来自Node的微红色消息(在我的情况下为Ember)清晰可见。


0

这是Windows 10(可能是7)的一种方法,它更改了cmd,npm终端本身的配色方案(主题),而不仅是特定应用程序的控制台输出。

我找到了有效的Windows插件-Color Tool,它大概是在Windows伞下开发的。链接上有描述。

我将colortool目录添加到系统环境路径变量中,并且现在每当启动终端时它都可用(NodeJs命令提示符,cmd)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.