Как изменить цвет шрифта консоли node.js? - PullRequest
434 голосов
/ 20 марта 2012

Мне пришлось изменить цвет фона консоли на белый из-за проблем с глазами, но шрифт серого цвета, и это делает сообщения нечитаемыми. Как я могу это изменить?

Ответы [ 29 ]

8 голосов
/ 12 октября 2017

Удобный однострочный текст, написанный мною для сценариев 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')}`)
6 голосов
/ 21 июня 2016

Сегодня существует два способа взглянуть на изменение цвета для консоли 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 :

enter image description here

6 голосов
/ 01 марта 2017

Я перегружал методы консоли.

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

Вывод есть.enter image description here

4 голосов
/ 19 апреля 2016

Наткнулся на этот вопрос и хотел использовать некоторые цвета на 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!"))

Предопределенные цветовые коды доступны здесь

4 голосов
/ 16 февраля 2017

Я не хочу никакой зависимости для этого, и только они работали для меня на 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"

source: https://coderwall.com/p/yphywg/printing-colorful-text-in-terminal-when-run-node-js-script

3 голосов
/ 05 октября 2018
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 голосов
/ 18 февраля 2016

консоль для рисования

Простое окрашиваемое бревно.Поддержка проверки объектов и однострочного обновления. Этот пакет просто перерисовывает консоль.

install

npm install paint-console

использование

require('paint-console');

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

демо

3 голосов
/ 03 апреля 2016

Вы также можете использовать 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 голосов
/ 16 января 2017

Я создал свой собственный модуль, 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 голос
/ 18 июля 2019

Я нашел этот ответ выше (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(", "));
...