Як змінити колір шрифту консолі node.js?


570

Мені довелося змінити колір фону консолі на білий через проблеми із очима, але шрифт сірого кольору, і це робить повідомлення нечитабельними. Як я можу це змінити?


4
Там же, де ви вже використовували для зміни кольору фону, ви можете змінити інші кольори.
Ден Д.

@hippietrail Ви знайшли краще рішення або можете прийняти одну з відповідей на це питання?
nelsonic

Як це зробити в чистому Node.js? Без кольорів або будь-якого іншого пакета.
Коста

1
У мене така ж проблема. Я підозрюю, що @Viclib використовує windows (як і я), тому інструкції щодо зміни термінальних кольорів є іноземною концепцією. Командна вікно Windows дозволяє змінювати 2 кольори переднього плану та 2 кольори фону. Вузол використовує інші кольори, які командний рядок Windows не може визначити.
Грег Вудс

2
Пізніше я виявив, що моя ментальна модель щодо того, як працювали кольори командних рядків Windows, була абсолютно неправильною. Я неправильно припустив (через жахливий інтерфейс), що ви можете змінювати лише передній план, кольори тла. Це неправильно. Усі 16 кольорів можуть використовуватися консольним додатком, і дуже важливо підібрати чутливі кольори для всіх 16, і ВЖЕ завжди використовувати кольорову плитку 1 як фон (і плитку 9 для "спливаючого фону"). Це було для мене таке одкровення, я написав допис у блозі (дійсно рідкісна подія). gregwoods.co.uk/2015/04/…
Грег Вудс

Відповіді:


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
Я прийняв це питання, тому що це найлініший, який працює, має багато кольорів і ніяких залежностей. Якщо ви хочете спростити рішення із залежностями, перевірте відповідь @ nelsonic, яка підказує дуже прості ліцензії.
MaiaVictor

7
Де ви знайшли це посилання? Що означає кожен символ у кольоровому значенні?
giorgos.nl

10
@ giorgos29cm → дивіться тут . Btw, додай1; яскраві кольори, тобто "\ x1b [1; 34m" == світло-блакитний ...
Frank Nocke

2
Як я можу запобігти появі цих символів під час друку у файл, а не на консолі?
Скай

1
Цікаво, що на ОС Windows 10 потужність жовта стає білою? Жовтий можна змусити працювати; крейда це робить. Однак ця відповідь врятувала мене від додавання крейди як залежності для декількох потворних журналів, дякую!
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
Хоча я згоден з тим, що відповідь МеттДжонсона (переосмислення кольорів за замовчуванням методу util.inpect - див. Нижче) краще, ніж використання модуля «Кольори», модуль «Кольори» вимагає установки нуля і відповідає потребам переважної більшості користувачів, що просто змінює колір консолі. .log вихід. Зрозуміло, що "возитися із вбудованими" погано (погодьтесь на 100%), але жоден розгорнутий код не повинен містити заяви console.log, тому давайте бути прагматичним щодо цього. @devundef Чи додають додаткові методи String до прототипу безладно з вашими тестовими одиницями?
нельсонік

8
Кольори має те, що зараз: var colors = require('colors/safe');а потім використовуйтеcolors.red('left string all alone')
Laoujin

1
Добре помічений @Laoujin - наступного разу сміливо пропоную редагувати. Я змінив приклад коду для кольорів у відповіді.
нельсонік

155

Якщо ви хочете змінити кольори безпосередньо самостійно без модуля, спробуйте

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

Спочатку \x1b[36mпотрібно змінити кольори, 36а потім повернутися до кінцевого кольору 0.

Ось список кольорів ANSI кольорів


15
Дякуємо, що згадали про відновлення кольору назад.
Василь Боровяк

25
Ось термінальні коди ANSI, telepathy.freedesktop.org/doc/telepathy-glib/…
Їжте в Joes

1
А що з зміною стилю шрифту, як напівжирний червоний, курсив зелений?
uzay95

1
Працював відмінно, не заплутувався, якщо в суворому режимі не заважали восьмеричні коди втечі.
Флорі

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. Ви можете встановити його за допомогою:

npm install colog

Репо та npm: https://github.com/dariuszp/colog


1
Я вважаю, що ОП не хоче надрукувати конкретний текст у певному кольорі, але весь термінальний вихід за замовчуванням повинен бути іншого кольору, можливо, навіть чорного з огляду на білий фон.
cwoebker

Потім він повинен змінити налаштування свого терміналу. Я впевнений, що це можливо в Linux. Поняття про Windows не має.
Даріушп

14
\033[31mпрацює, але \033[91mні. Для терміналу Ubuntu це має бути \033[0m.
Редсандро

4
І error: octal escape sequences "\033[31mServer ready @ #{app.get('port')}\033[91m" are not allowed
вось

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

ІТ дасть вам вихід ближче до консолі клієнтської сторони:

введіть тут опис зображення


1
Я використовую те саме і працює добре, але чомусь Дім нічого не робить? Я хочу, щоб ефект сірого кольору був таким, що думка використовувала б білий колір з тьмяним ефектом, що призведе до сірого кольору, але тільки білий колір не надто тьмяний. Будь-яка ідея?
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, де перше число - це код, який випускається перед виходом, а другий номер - код, який слід випускати після. Тож якщо ми подивимось на графік 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() , результат набагато читає.

Якщо ви хочете встановити кольори автоматично під час запуску вузла, створіть сценарій, який запускає відповідь, наприклад:

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

Ця бібліотека Сіндре Сорхуса є найкращою на даний момент:

крейда

  • Високопродуктивний
  • Не поширюється 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"

Наприклад, якщо ви хочете мати тьмяний, червоний текст із синім фоном, ви можете це зробити у 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. Я вважаю, що це те, що ваша програма оболонки повинна підтримувати. Якщо ви використовуєте 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, рекомендую перевірити кольоровий кліп .

Включає кольори та стилі, такі як жирний, курсив та підкреслення.

Для порівняння різних модулів у цій категорії дивіться тут .


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

Бонус:

Цей метод також допомагає швидко сканувати та знаходити журнали безпосередньо у вихідному коді .

Але шрифт смайлів Emoji за замовчуванням не є кольоровим за замовчуванням, і ви можете спочатку зробити їх різнокольоровими.


6

Сьогодні є два способи подивитися на зміну кольорів консолі Node.js.

Перша - через бібліотеки загального призначення, які можуть прикрасити текстовий рядок кольоровими тегами, які ви виведете через стандарт console.log.

Найпопулярніші бібліотеки для цього сьогодні:

І інший спосіб - виправлення існуючих консольних методів. Одна з таких бібліотек - Manakin дозволяє автоматично встановити стандартні кольори для всіх методів консолі ( log, warn, errorіinfo ).

Одна суттєва відмінність від загальних бібліотек кольорів - вона може встановлювати кольори як глобально, так і локально, зберігаючи послідовний синтаксис та формат виводу для кожного консольного методу 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

реєстратор / 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. Для простого прикладу, ось код 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

Можна також використовувати кольорові роботи .

Використання:

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

Переглянути модуль Coolors


це, наприклад, не працюватиме в 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())

Або, якщо ви не хочете розширювати прототип рядка, ви можете просто будь-який із трьох інших варіантів:

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 RELICENSING

Це було пару років тому. Для запису stdout це було потрібно, можливо, воно вже імпортується за замовчуванням.
Кенжі Мінаморі

А, добре. Мені просто цікаво, бо це не так, як sysйого використовували десь. Сьогодні це насправді не потрібно!
jhpratt GOFUNDME RELICENSING

1

вузол-розфарбувати

Надає функції для друку текстів у кольорі, а також для форматування тексту, наприклад жирного, блимання тощо.


3
Хоча надане вами посилання може відповісти на питання. Найкраще вносити основні частини вашого рішення безпосередньо у свою відповідь, якщо сторінка за посиланням закінчується в майбутньому.
Кмейкснер

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 ('помилка')

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).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.