node.js의 콘솔 글꼴 색상을 변경하는 방법?


570

눈 문제로 인해 콘솔 배경색을 흰색으로 변경해야했지만 글꼴은 회색이며 메시지를 읽을 수 없습니다. 어떻게 바꾸나요?


4
이미 배경색을 변경하는 데 사용한 것과 같은 곳에서 다른 색을 변경할 수 있습니다.
Dan D.

@hippietrail 더 나은 해결책을 찾았습니까? 아니면이 질문에 대한 답변 중 하나를 받아 들일 수 있습니까?
nelsonic

순수한 Node.js에서 어떻게합니까? 색상이나 다른 패키지가 없습니다.
Costa

1
같은 문제가 있습니다. @Viclib이 창을 사용하고 있다고 생각합니다 (나 그대로). 따라서 터미널 색상을 변경하는 지침이 외국 개념입니다. windows 명령 프롬프트를 사용하면 2 개의 전경색과 2 개의 배경색을 변경할 수 있습니다. 노드는 Windows 명령 프롬프트에서 정의 할 수없는 다른 색상을 사용합니다.
Greg Woods

2
나중에 Windows 명령 프롬프트 색상이 작동하는 방식에 대한 내 정신 모델이 완전히 잘못되었음을 발견했습니다. 전경 (배경색) 만 변경할 수 있다고 잘못 (끔찍한 UI로 인해) 가정했습니다. 이것은 잘못이다. 16 가지 색상은 모두 콘솔 앱에서 사용할 수 있으며 16 가지 색상 모두에 적합한 색상을 선택하고 항상 색상 타일 1을 배경 (및 "팝업 배경"의 타일 9)을 사용하는 것이 중요합니다. 이것은 나에게 그러한 계시였습니다. 나는 블로그 게시물을 작성했습니다 (실제로는 드문 사건). gregwoods.co.uk/2015/04/…
Greg Woods

답변:


1150

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 이스케이프 코드 라고도하며 표준화되어 있으므로 모든 플랫폼에서 작동해야합니다.

위키 백과는 다른 단말기 색상을 표시하는 방법의 좋은 비교가 https://en.wikipedia.org/wiki/ANSI_escape_code#Colors을


42
이 질문은 효과가 있고 가장 많은 색상을 가지고 있으며 종속성이 없기 때문에이 질문을 수락했습니다. 당신이 간단한 해결책하려는 경우 종속성을, 매우 간단 libs와 제안의 nelsonic 대답 @ 확인합니다.
MaiaVictor

7
이 참조를 어디에서 찾았습니까? 색상 값의 모든 문자는 무엇을 의미합니까?
giorgos.nl

10
@ giorgos29cm → 여기를 참조하십시오 . Btw, 1;밝은 색을 위해 "\ x1b [1; 34m"== 연한 파랑을 추가하십시오 ...
Frank Nocke

2
콘솔이 아닌 파일로 인쇄 할 때 이러한 문자가 표시되지 않도록하려면 어떻게해야합니까?
Sky

1
흥미롭게도 Windows 10 powershell에서 노란색이 흰색으로 바뀝니 까? 노란색은 작동하도록 만들 수 있습니다. 분필 은 그것을한다. 그러나이 답변은 분필을 약간의 로그에 대한 종속성으로 추가하지 않아도되었습니다. 감사합니다!
webelo

318

Node.js에는 콘솔 텍스트의 형식을 지정하는 데 사용할 수있는 여러 패키지가 있습니다. 가장 인기있는 것은 :

용법:


분필:

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

CLI-COLOR :

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

그림 물감:

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

많은 사람들이 String 프로토 타입colors 변경에 대한 비 승인에 주목했습니다 . 프로토 타입을 홀로 남겨 두려면 다음 코드를 대신 사용하십시오.

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

8
색상은 이제 다음 var colors = require('colors/safe');과 같이 사용하십시오colors.red('left string all alone')
Laoujin

1
@Laoujin을 잘 발견했습니다. 다음에는 편집을 제안하십시오. 답변에서 색상의 코드 예제를 수정했습니다.
nelsonic

155

모듈없이 직접 색상을 변경하려면 시도하십시오

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

먼저 \x1b[36m색상을 변경 36한 다음 다시 터미널 색상 으로 변경하십시오 0.

다음은 ANSI 색상 코드 목록입니다.


15
색상을 다시 설정하는 방법에 대해 언급 해 주셔서 감사합니다.
Vasyl Boroviak


1
굵은 빨간색, 기울임 꼴 녹색과 같은 글꼴 스타일을 변경하는 것은 어떻습니까?
uzay95

1
완벽하게 작동했으며 엄격 모드에서 8 진 이스케이프 코드가 방지되는 것을 막지 못했습니다.
Florrie

70

https://help.ubuntu.com/community/CustomizingBashPrompt 에서 예제를 사용할 수 있습니다.

nodeJ요지

예를 들어 텍스트의 일부를 붉은 색으로 표시하려면 다음과 같이 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하지 않습니다. 우분투 터미널의 경우이어야합니다 \033[0m.
Redsandro

4
그리고 8 진 탈출은 작동하지 않는 것 같습니다 :error: octal escape sequences "\033[31mServer ready @ #{app.get('port')}\033[91m" are not allowed
jcollum

4
\033[0m텍스트를 다시 정상으로 되 돌리는 데 사용해야합니다.\033[91m
mollerhoj

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 명령 프롬프트를 시작합니다.

( repl 아이디어에 대한 이 답변 에서 loganfsmyth에 감사합니다 .)


19

Sindre Sorhus의이 라이브러리는 현재 최고입니다.

분필

  • 고성능
  • 확장하지 않습니다 String.prototype
  • 표현 API
  • 스타일을 중첩하는 기능
  • 깨끗하고 집중된
  • 컬러 지원 자동 감지
  • 적극적으로 유지
  • 5500+ 모듈에서 사용

2
그래하지만 다른 의존성
wayofthefuture

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 깜박도 작동하지 않습니다. 노드에서 사용할 수없는 것 같습니다
Sv443

@ Sv443 그러나 그것은 스크린 샷에서 작동합니다 :) 그리고 문제는 노드에 관한 것이 었습니다. Windows 콘솔에서만 작동하지 않는다고 생각했습니다. 어떤 OS를 사용하십니까?
Sergey

2
@Sergey Windows를 사용하고 있으며 CMD와 Powershell에서 시도했지만 둘 다 작동하지 않습니다.
Sv443

@Sergey 내 스크린 샷은 MacOS 터미널 응용 프로그램에서 가져온 것입니다. 나는 이것이 당신의 쉘 응용 프로그램이 지원 해야하는 것이라고 생각합니다. Windows를 사용하는 경우 Cygwin을 설치하고 bash에서 시도해보십시오. 이것에 대해서도 알고 싶습니다.
Shnd

@ Shnd 나는 그것이 같은지 확실하지 않지만 git-bash에서 시도했지만 작동하지 않았습니다.
Sergey

14

의존성을 가질 수없는 npm 스크립트를 위해 작성한 편리한 one-liner :

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 빨강, 녹색, 파랑, 흰색, 녹청, 자홍, 노랑 및 blac (k)를 나타냅니다 .


유용한 것 같지만 더 자세히 설명해 주시겠습니까? 형사 모드 켜기 : 아 좋아, rgbwc ... 빨강, 초록, 파랑, 흰색, 시안, 마젠타, 노랑 및 k를 의미합니까?
538ROMEO

10

String 객체의 내장 메소드를 망칠 수없는 색상에 대한 인기있는 대안은 cli-color를 확인하는 것이 좋습니다 .

굵은 체, 기울임 꼴 및 밑줄과 같은 색상과 체인 가능 스타일이 모두 포함됩니다.

이 범주의 다양한 모듈을 비교하려면 여기를 참조 하십시오 .


10

단순한 라이브러리가없는 단순한 라이브러리 :

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

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

1
콘솔이 객체를 처리하는 방식으로 객체와 작동하지 않으며 콘솔 스트림 유형이나 TTY 지원을 존중하지 않아 추가 문제가 발생한다는 것을 알면 간단하지 않습니다. 그것은 길을 많이 문제를 가져올 것입니다 해킹입니다.
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

보너스:

이 방법을 사용하면 소스 코드에서 직접 로그를 빠르게 스캔하고 찾을 수 있습니다 .

그러나 리눅스 기본 이모티콘 글꼴은 기본적으로 화려하지 않으며 먼저 화려하게 만들 수 있습니다.


6

오늘 Node.js 콘솔의 색상 변경을 보는 두 가지 방법이 있습니다.

하나는 텍스트 태그를 색상 태그로 꾸밀 수있는 범용 라이브러리를 통해 제공되며, 표준 태그를 통해 출력됩니다 console.log.

오늘날 최고의 라이브러리 :

그리고 다른 방법은 기존 콘솔 방법을 패치하는 것입니다. 하나는 이러한 라이브러리 - 마나 킨은 자동으로 모든 콘솔 방법에 대한 표준 색상을 설정할 수 있습니다 ( log, warn, errorinfo).

일반적인 색상 라이브러리와의 한 가지 중요한 차이점-모든 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 이것을 시도 하십시오 : 작동해야합니다.
Sergey

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 이스케이프 시퀀스를 인쇄하는 것입니다. 간단한 예를 들어, 다음은 블렌더 빌드 스크립트의 파이썬 코드입니다.

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

우분투에서는 간단히 색상 코드를 사용할 수 있습니다.

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 RELICENSING

1

노드 채색

텍스트를 컬러로 인쇄하고 굵게, 깜박임 등과 같은 텍스트 서식을 지정하는 기능을 제공합니다.


3
귀하가 제공 한 링크가 질문에 대한 답변 일 수 있습니다. 나중에 링크의 페이지가 만료되는 경우 솔루션의 필수 부분을 답변에 직접 입력하는 것이 가장 좋습니다.
Kmeixner

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 년 :

간단한 방법, 메시지에 시간 색상을 추가하면 코드를 변경할 필요가 없으며 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 우산 아래에서 개발 된 Windows 플러그인 -Color Tool을 발견했습니다 . 링크 에서 설명을 볼 수 있습니다 .

시스템 환경 경로 변수에 colortool 디렉토리를 추가했으며 이제 터미널을 시작할 때마다 사용할 수 있습니다 (NodeJs 명령 프롬프트, cmd).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.