Мне пришлось изменить цвет фона консоли на белый из-за проблем с глазами, но шрифт серого цвета, и это делает сообщения нечитаемыми. Как я могу это изменить?
Мне пришлось изменить цвет фона консоли на белый из-за проблем с глазами, но шрифт серого цвета, и это делает сообщения нечитаемыми. Как я могу это изменить?
Ответы:
Ниже вы можете найти цветовую ссылку текста для команды при запуске приложения 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
это escape-последовательность, которая будет перехвачена вашим терминалом и даст ему команду переключиться на красный цвет. Фактически, \x1b
это код для непечатного управляющего символа escape
. Escape-последовательности, имеющие дело только с цветами и стилями, также называются escape-кодом ANSI и стандартизированы, поэтому они (должны) работать на любой платформе.
В Википедии есть хорошее сравнение того, как разные терминалы отображают цвета https://en.wikipedia.org/wiki/ANSI_escape_code#Colors
1;
для ярких цветов, то есть "\ x1b [1; 34m" == светло-голубой ...
Для форматирования консольного текста в Node.js. доступно несколько пакетов. Наиболее популярными являются:
CHALK:
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);
Многие люди отмечают свое неодобрение по colors
поводу изменения прототипа String . Если вы предпочитаете, чтобы ваши прототипы оставались в покое, используйте вместо этого следующий код:
const colors = require('colors/safe');
console.log(colors.red('Text in red'));
var colors = require('colors/safe');
и затем используйтеcolors.red('left string all alone')
Если вы хотите изменить цвета непосредственно, без модуля, попробуйте
console.log('\x1b[36m', 'sometext' ,'\x1b[0m');
Сначала \x1b[36m
измените цвета на, 36
а затем снова на цвет терминала 0
.
Чтобы раскрасить вывод, вы можете использовать примеры оттуда:
https://help.ubuntu.com/community/CustomizingBashPrompt
Также Gist для nodeJs
Например, если вы хотите, чтобы часть текста была красного цвета, просто сделайте console.log с:
"\033[31m this will be red \033[91m and this will be normal"
На основании этого я создал расширение "colog" для Node.js. Вы можете установить его используя:
npm install colog
Репо и npm: https://github.com/dariuszp/colog
\033[31m
работает но \033[91m
не работает Для Ubuntu Terminal это должно быть \033[0m
.
error: octal escape sequences "\033[31mServer ready @ #{app.get('port')}\033[91m" are not allowed
\033[0m
следует использовать, чтобы вернуть текст в нормальное состояние, а не\033[91m
Это список доступных цветов (фон, передний план) в консоли с доступными действиями (сброс, реверс, ...).
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
Это даст вам вывод ближе к консоли на стороне клиента:
В соответствии с этой документацией вы можете изменить цвета в зависимости от типа данных на выходе:
// 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()
, вывод гораздо более читабельным.
Если вы хотите установить цвета автоматически при запуске узла, создайте скрипт, который запускает 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 в этом ответе за идею repl.)
Эта библиотека Синдре Сорхуса является лучшей на данный момент:
String.prototype
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");
Порядок цветов и эффектов, кажется, не так важен, но всегда не забывайте сбрасывать цвета и эффекты в конце.
Удобный однострочник, который я написал для сценариев 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)
Вы можете использовать цвета для текста, как другие упоминали в своих ответах.
Но вы можете использовать смайлики вместо этого! Например, вы можете использовать Вы можете использовать ⚠️
для предупреждений и сообщений 🛑
об ошибках.
Или просто используйте эти записные книжки в качестве цвета:
📕: error message
📙: warning message
📗: ok status message
📘: action message
📓: canceled status message
📔: Or anything you like and want to recognize immediately by color
Этот метод также помогает вам быстро сканировать и находить журналы прямо в исходном коде .
Но шрифт Emoji по умолчанию в Linux не цветной, и вы можете сначала сделать его цветным.
Никаких библиотек, никаких сложностей, просто:
console.log(red('Error!'));
function red(s) {
return '\033[31m' + s;
}
Есть два способа посмотреть на изменение цвета для консоли 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 :
Я перегружал консольные методы.
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!
.
Наткнулся на этот вопрос и хотел использовать некоторые цвета на 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!"))
Предопределенные цветовые коды доступны здесь
Простой красочный журнал. Поддержка проверки объектов и однострочного обновления. Этот пакет просто перекрашивает консоль.
устанавливать
npm install paint-console
Применение
require('paint-console');
console.info('console.info();');
console.warn('console.warn();');
console.error('console.error();');
console.log('console.log();');
Я не хочу никакой зависимости для этого, и только они работали для меня на 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
Я нашел этот ответ выше ( 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(", "));
ЗК / 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 ")
Это в некоторой степени зависит от того, на какой платформе вы находитесь. Наиболее распространенный способ сделать это - распечатать escape-последовательности ANSI. Для простого примера, вот код Python из скриптов сборки Blender:
// 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}`)
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);
Вы также можете использовать колеров .
Применение:
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.]]`);
Это очень хорошо для использования или расширения. Вы можете использовать просто:
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'));
Я создал свой собственный модуль, 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"))
В Ubuntu вы можете просто использовать цветовые коды:
var sys = require('sys');
process.stdout.write("x1B[31m" + your_message_in_red + "\x1B[0m\r\n");
require
?
sys
когда-либо использовался Это на самом деле не нужно в наше время, хотя!
Предоставляет функции для печати текстов в цвете, а также для форматирования текста, например, жирным шрифтом, мерцанием и т. Д.
Мне очень понравился ответ @ 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);
}
});
}
2017:
Простой способ, добавляя временной цвет к сообщению, вам не нужно менять код, используйте keep your 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)
);
};
});
Если вы используете Windows CMD, перейдите к терминалу Properties / Colors (CMD вверху слева) и затем переопределите значение RGB оскорбительного цвета. В моем случае я считаю, что это пятый цветной квадрат слева, который я изменил (222,222,222). Неважно, отображает ли выбранная в данный момент радиокнопка «Текст экрана» или «Фон экрана», поскольку вы просто переопределяете этот определенный «системный» цвет. После того, как вы изменили цвет, не забудьте выбрать предпочтительный цвет фона или текста, прежде чем нажимать ОК.
После изменения все эти красноватые сообщения от Node (Ember в моем случае) хорошо видны.
Это подход для Windows 10 (может быть, для 7), и он изменяет цветовую схему (тему) для cmd, самого терминала npm, а не только вывод консоли для конкретного приложения.
Я нашел работающий плагин Windows - Color Tool , который предположительно разработан под зонтиком Windows. Описание доступно по ссылке .
Я добавил каталог colortool в переменную пути системного окружения, и теперь он доступен при каждом запуске терминала (командная строка NodeJs, cmd).