Node.js konsol yazı tipi rengini nasıl değiştirebilirim?


570

Konsolun arka plan rengini göz problemleri nedeniyle beyaza değiştirmek zorunda kaldım, ancak yazı tipi gri renkli ve mesajları okunamaz hale getiriyor. Nasıl değiştirebilirim?


4
Arka plan rengini değiştirmek için zaten kullandığınız yerde, diğer renkleri değiştirebilirsiniz.
Dan

@hippietrail daha iyi bir çözüm buldunuz mu veya bu sorunun yanıtlarından birini kabul edebilir misiniz?
nelsonic

Bunu saf Node.js'de nasıl yaparsınız? Renkler veya başka bir paket olmadan.
Costa

1
Bendede aynı sorun var. @Viclib'in pencereleri kullandığından şüpheleniyorum (benim gibi), bu yüzden terminal renklerini değiştirme talimatları yabancı bir kavramdır. Windows komut istemi 2 ön plan ve 2 arka plan renginin değiştirilmesine izin verir. Düğüm, windows komut isteminin tanımlayamadığı diğer renkleri kullanır.
Greg Woods

2
Daha sonra Windows komut istemi renklerinin nasıl çalıştığına dair zihinsel modelimin tamamen yanlış olduğunu keşfettim. Yanlışlıkla (korkunç bir kullanıcı arayüzü nedeniyle) yalnızca ön plan, arka plan renklerini değiştirebileceğinizi varsaydım. Bu yanlış. 16 rengin tümü bir konsol uygulaması tarafından kullanılabilir ve 16'nın tümü için mantıklı renkler seçmek hayati önem taşır ve DAİMA renk döşemesi 1'i arka plan olarak kullanın (ve "açılır pencere arka planı" için 9 döşemesi). Bu benim için böyle bir vahiydi, bir blog yazısı yazdım (gerçekten nadir bir olay). gregwoods.co.uk/2015/04/…
Greg Woods

Yanıtlar:


1150

Aşağıda node.js uygulamasını çalıştırırken komuta edilecek metnin renk referansını bulabilirsiniz:

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

Not %sdizede (ikinci argüman) nereye enjekte edilir olduğunu. \x1b[0mterminal rengini sıfırlar, böylece bu noktadan sonra seçilen renk olmaya devam etmez.

Renk referans

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"

DÜZENLE:

Örneğin, terminaliniz tarafından yakalanacak ve kırmızı renge geçmesini söyleyen \x1b[31mbir kaçış dizisidir . Aslında, yazdırılamayan kontrol karakterinin\x1b kodu . Sadece renkler ve stillerle ilgilenen kaçış dizileri ANSI kaçış kodu olarak da bilinir ve standartlaştırılmıştır, bu nedenle herhangi bir platformda çalışmalıdırlar. escape

Wikipedia, farklı terminallerin renkleri nasıl görüntülediğiyle ilgili güzel bir karşılaştırma yaptı https://en.wikipedia.org/wiki/ANSI_escape_code#Colors


42
Bu soruyu kabul ettim, çünkü çalışan en tembel soru, birçok rengi var ve bağımlılığı yok. Eğer basit bir çözüm istiyorsanız ile bağımlılıkları, çok basit kütüphanelerini anlaşılacağı en nelsonic cevap @ kontrol edin.
MaiaVictor

7
Bu referansı nereden buldunuz? Renk değerindeki her karakter ne anlama geliyor?
giorgos.nl

10
@ giorgos29cm → buraya bakın . Btw, 1;parlak renkler için bir ekleyin , yani "\ x1b [1; 34m" == açık mavi ...
Frank Nocke

2
Konsol yerine dosyaya yazdırırken bu karakterlerin gösterilmesini nasıl engellemeliyim?
Sky

1
Merakla, Windows 10 powershell'de sarı beyaza dönüşüyor mu? Sarı işe yarayabilir; tebeşir yapar. Ancak, bu cevap beni birkaç ölçülü günlük için bir bağımlılık olarak tebeşir eklemekten kurtardı, teşekkürler!
webelo

318

Node.js'de konsol metnini biçimlendirmek için birden fazla paket vardır. En popüler olanları:

Kullanımı:


TEBEŞİR:

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

CLI-RENK:

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

RENKLER:

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

Birçok kişi String prototipinicolors değiştirmediklerini onaylamadı . Prototiplerinizin yalnız bırakılmasını tercih ediyorsanız, aşağıdaki kodu kullanın:

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

1
Stiller için basit hafif desteğe bile sahiptir!
hippietrail

2
@devundef, String nesnesine yöntem ekleme konusunda sizi kabul eder. GitHub'daki modül yazarına bahsetmeye değer olabilir. Ve / veya benzer sadeliğe sahip alternatif bir modül / yöntem önermek.
nelsonic

3
MattJohnson'un cevabının (util.inpect yönteminin varsayılan renklerini geçersiz kılma - aşağıya bakın) Colors modülünü kullanmaktan daha iyi olduğunu kabul etsem de, Colors modülü sıfır kurulum gerektirir ve kullanıcıların konsolun rengini değiştiren büyük çoğunluğun ihtiyaçlarına uyar .log çıktı. Tabii, "yerleşik ile karışıklık" kötü (% 100 katılıyorum) ama konuşlandırılan hiçbir kod console.log ifadeleri içermelidir, bu yüzden bu konuda pragmatik olalım. @devundef Prototip eklenen ekstra String yöntemleri birim testlerinizle mi karışıyor?
nelsonic

8
Renkler şimdi var: var colors = require('colors/safe');ve sonra kullanıncolors.red('left string all alone')
Laoujin

1
İyi tespit @Laoujin - bir dahaki sefere bir düzenleme teklif çekinmeyin. Yanıtta Renkler için kod örneğini değiştirdim.
nelsonic

155

Bir modül olmadan renkleri doğrudan kendiniz değiştirmek isterseniz

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

Önce \x1b[36mrenkleri değiştirip 36sonra terminal rengine geri dönün 0.

İşte ANSI renk kodlarının listesi


15
Rengi nasıl sıfırlayacağınızı belirttiğiniz için teşekkür ederiz.
Vasyl Boroviak

25

1
Kalın kırmızı, italik yeşil gibi yazı tipi stilini değiştirmeye ne dersiniz?
uzay95

1
Mükemmel çalıştı, sıkı modda engellenen sekizlik kaçış kodları ile uğraşmadı.
Florrie

70

Çıktınızı renklendirmek için Oradan örnekleri kullanabilirsiniz:
https://help.ubuntu.com/community/CustomizingBashPrompt

Ayrıca bir nodeJ'ler için Gist

Örneğin, metnin bir kısmını kırmızı renkte istiyorsanız, console.log ile şunları yapmanız yeterlidir:

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

Buna dayanarak Node.js için "colog" uzantısı oluşturdum. Şunları kullanarak kurabilirsiniz:

npm install colog

Repo ve npm: https://github.com/dariuszp/colog


1
OP'nin belirli bir renkte belirli bir metni yazdırmak istemediğine inanıyorum, ancak tüm Terminal çıkışlarının varsayılan olarak farklı bir renkte olması, belki de beyaz arka plan göz önüne alındığında siyah olması.
cwoebker

Sonra terminalinin ayarlarını değiştirmeli. Linux'ta mümkün olduğuna eminim. Windows hakkında bir fikrim yok.
Dariuszp

14
\033[31mçalışıyor ama \033[91mçalışmıyor. Ubuntu Terminali için olması gerekir \033[0m.
Redsandro

4
Ve sekizli kaçışlar işe yaramıyor:error: octal escape sequences "\033[31mServer ready @ #{app.get('port')}\033[91m" are not allowed
jcollum

4
\033[0mmetni normale döndürmek için kullanılmalı, değil\033[91m
mollerhoj

31

Bu, konsolda kullanılabilir eylemlerle (sıfırlama, ters, ...) kullanılabilir renklerin (arka plan, ön plan) bir listesidir.

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

Aşağıdaki gibi kullanın:

 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

Ayrıca şunları da yükleyebilirsiniz:

npm install console-info console-warn console-error --save-dev

BT, istemci tarafının konsoluna daha yakın bir çıktı verecektir:

resim açıklamasını buraya girin


1
Aynı kullanıyorum ve iyi çalışıyor ama nedense Dim hiçbir şey yapmıyor? Gri renk efekti istiyorum, bu yüzden düşünce dim efekti ile beyaz renk kullanacaktı gri renk ile sonuçlanacak, ancak sadece beyaz renk loş değil. Herhangi bir fikir?
Angad

28

Başına bu belgelerin , sen çıktı veri türüne dayalı olarak renk değiştirebilir:

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

Bunlar, ANSI SGR çıkış kodları gibi görünmektedir, burada ilk sayı çıktıdan önce verilecek koddur ve ikinci sayı daha sonra verilecek koddur. Wikipedia'daki ANSI SGR kodları çizelgesine bakarsak çoğunun ön plan rengini ayarlamak için 30-37 rakamıyla başladığını ve varsayılan ön plan rengine sıfırlamak için 39 ile biteceğini göreceksiniz.

Sevmediğim bir şey bunlardan bazılarının ne kadar karanlık olduğu. Özellikle tarihler. Devam edin ve new Date()konsolu deneyin . Siyahtaki koyu macenta okumak gerçekten zor. Bunun yerine açık macentaya geçelim.

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

Şimdi denediğinde new Date() , çıktı çok daha okunabilir.

Düğümü başlatırken renkleri otomatik olarak ayarlamak isterseniz, repl'i başlatan bir komut dosyası oluşturun, şöyle:

// 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({});

Bu dosyayı kaydedin (örneğin, init.js) ve ardından çalıştırınnode.exe init.js . Renkleri ayarlayacak ve node.js komut istemini başlatacaktır.

(Repl fikri için bu cevaptaki loganfsmyth'e teşekkürler .)


19

Sindre Sorhus'un bu kütüphanesi şu anda en iyisi:

tebeşir

  • Yüksek performans
  • Uzatmaz String.prototype
  • Etkileyici API
  • Stilleri iç içe yerleştirebilme
  • Temiz ve odaklanmış
  • Renk desteğini otomatik olarak algılar
  • Aktif bakım
  • 5500+ modül tarafından kullanılır

2
evet ama başka bir bağımlılığı
wayofthefuture

18

Renk kodları belirtildiği gibidir

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"

Örneğin, Mavi arka plana sahip bir Dim, Red metnine sahip olmak istiyorsanız, Javascript'te şu şekilde yapabilirsiniz:

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

Renklerin ve efektlerin sırası o kadar önemli görünmüyor, ancak sonunda renkleri ve efektleri sıfırlamayı unutmayın.


@Sergey blink de benim için çalışmıyor, Düğümde mevcut değil gibi görünüyor
Sv443

@ Sv443 Ama ekran görüntüsünde çalışıyor :) Ve soru Düğüm hakkındaydı. Sadece Windows konsolunda çalışmadığını düşündüm. Hangi işletim sistemini kullanıyorsunuz?
Sergey

2
@Sergey Windows kullanıyorum ve CMD ve Powershell'de denedim ve her ikisi de çalışmıyor
Sv443

@Sergey Ekran görüntülerim MacOS terminal uygulamasından. Bunun kabuk uygulamanızın desteklemesi gereken bir şey olduğuna inanıyorum. Windows kullanıyorsanız, Cygwin'i yüklemeyi ve bunu bash'da denemenizi öneririm. Bunu da merak ediyorum.
Shnd

@Shnd Aynı olup olmadığından emin değilim, ama git-bash üzerinde denedim ve işe yaramadı.
Sergey

14

Bağımlılığı olmayan npm komut dosyaları için yazdığım kullanışlı bir tek satırlık:

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

Düzenleme: r,g,b,w,c,m,y,k kırmızı, yeşil, mavi, beyaz, mavi, kırmızı, sarı ve blac (k) anlamına gelir


Yararlı görünüyor ama lütfen daha fazla açıklayabilir misiniz? Dedektif modu açık: ah tamam, rgbwc ... kırmızı, yeşil, mavi, beyaz, camgöbeği, macenta, sarı ve k anlamına gelir?
538ROMEO

10

String nesnesinin yerleşik yöntemleriyle uğraşmayan renklere popüler bir alternatif için cli-color'a göz atmanızı öneririz .

Hem renkleri hem de kalın, italik ve altı çizili gibi zincirlenebilir stilleri içerir.

Bu kategorideki çeşitli modüllerin karşılaştırması için buraya bakın .


10

Kitaplık yok komplikasyon yok sadece basit:

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

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

1
Konsolun bunları işleme biçimiyle nesnelerle çalışmadığını ve konsol akışı türlerine veya başka sorunlar yaratan TTY desteğine uymadığını fark ettiğinizde basit değildir. Sadece yolda birçok sorun getirecek bir kesmek.
vitaly-t

JSON.stringify bunun için
wayofthefuture

10

Emoji

Yanıtlarında belirtildiği gibi metin için renkleri kullanabilirsiniz.

Ama bunun yerine emojileri kullanabilirsiniz ! Örneğin kullanabilirsiniz ⚠️Uyarı mesajları için kullanabilirsiniz ve🛑 hata mesajları için .

Veya bu not defterlerini renk olarak kullanın:

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

Bonus:

Bu yöntem ayrıca günlükleri doğrudan kaynak kodunda hızlı bir şekilde taramanıza ve bulmanıza yardımcı olur .

Ancak linux varsayılan emoji yazı tipi varsayılan olarak renkli değildir ve önce onları renkli hale getirmek isteyebilirsiniz.


6

Bugün Node.js konsolu için renk değiştirmenin iki yolu vardır.

Bunlardan biri, bir metin dizesini daha sonra standarttan çıkardığınız renk etiketleriyle süsleyebilen genel amaçlı kitaplıklar aracılığıyla yapılır console.log.

Bugün bunun için en iyi kütüphaneler:

Ve diğer yol - mevcut konsol yöntemlerini yamalamak. Bu tür bir kütüphane - manakin otomatik olarak tüm konsol yöntemleri için standart renkleri belirlemenize olanak verir ( log, warn, errorveinfo ).

Genel renk kitaplıklarından önemli bir fark - renkleri global veya yerel olarak ayarlayabilir ve renkleri otomatik olarak ayarlandığından renkleri belirtmek zorunda kalmadan kullandığınız her Node.js konsol yöntemi için tutarlı sözdizimi ve çıktı formatını koruyabilir .

Konsolun arka plan rengini göz problemleri nedeniyle beyaza değiştirmek zorunda kaldım, ancak yazı tipi gri renkli ve mesajları okunamaz hale getiriyor. Nasıl değiştirebilirim?

Özellikle sorununuz için, en basit çözüm:

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

console.logUygulamanızdaki her çağrı için siyah renk ayarlayacaktır . Daha fazla renk koduna bakın .

Manakin tarafından kullanılan varsayılan renkler :

resim açıklamasını buraya girin


6

Konsol yöntemlerini aşırı yükledim.

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

Çıktı.

resim açıklamasını buraya girin


Bu, biçimlendirme sözdizimi ile çalışmaz. Örnek: console.info('Hello %s', 'World!')görüntülemek için beklenen Hello World!değil, Hello %s World!.
vitaly-t

@ vitaly-t denemek bu : o çalışmalıdır.
Sergey

5

Bu soruya rastladı ve herhangi bir bağımlılık olmadan stdout'ta bazı renkler kullanmak istedi. Bu, buradaki diğer harika cevapları birleştirir.

İşte sahip olduğum şey. (Düğüm v4 veya daha üstünü gerektirir)

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

Sadece dosyayı isteyin, ardından şu şekilde kullanın:

const colors = require('./colors')
console.log(colors.green("I'm green!"))

Önceden tanımlanmış renk kodlarını burada bulabilirsiniz


1
Örneğin, bir günlük dosyasına yönlendirildiğinde düzgün çalışmaz.
vitaly-t

4

Boya-Konsol

Basit renklendirilebilir günlük. Destek nesneleri incelemek ve tek satır güncelleme Bu paket sadece konsolu yeniden boyamak.

Yüklemek

npm install paint-console

kullanım

require('paint-console');

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

gösteri


4

Bunun için herhangi bir bağımlılık istemiyorum ve sadece bunlar benim için OS X'de çalıştı. Buradaki cevaplardan diğer tüm örnekler bana Octal literalhata verdi .

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"

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


4

Bu cevabı yukarıda buldum ( https://stackoverflow.com/a/41407246/4808079 ) çok yararlı, ancak eksik. Bir şeyi sadece bir kez renklendirmek istediyseniz, sanırım iyi olurdu, ancak bence çalıştırılabilir bir işlevsel formda paylaşmak gerçek hayattaki kullanım durumları için çok daha uygulanabilir.

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

Şöyle kullanın:

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

Sonra şöyle kullanın:

console.logBgGreen(" grüner Hintergrund ")

4

Bu, hangi platformda olduğunuza bağlıdır. Bunu yapmanın en yaygın yolu ANSI kaçış dizileri basmaktır. Basit bir örnek için, blender oluşturma komut dosyalarından bazı python kodları:

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

Bunun gibi bir kod kullanmak için böyle bir şey yapabilirsiniz

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

"Sekizli kaçış dizilerine katı modda izin verilmez."
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

Renk çalışmalarını da kullanabilirsiniz .

Kullanımı:

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

Hayatı kolaylaştırmak için onunla da bir işlev yapabilirsiniz.

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

Şimdi şunları yapabilirsiniz:

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

2

Coolors

Kullanım veya uzatmak için oldukça iyidir. Basitçe kullanabilirsiniz:

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

Veya config ile:

var coolors = require('coolors');
console.log(coolors('My cool console log', {
   text: 'yellow',
   background: 'red',
   bold: true,
   underline: true,
   inverse: true,
   strikethrough: true
}));

Ve uzatmak gerçekten komik görünüyor:

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 modülünü görüntüle


örneğin, bir günlük dosyasına yeniden yönlendirildiğinde Node.js'de düzgün çalışmaz.
vitaly-t

2

Kendi modülümü yarattım StyleMe . Yaptım, böylece az yazarak çok şey yapabilirim. Misal:

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.

Ayrıca yuvalanabilir:

console.log("This is normal red{this is red blu{this is blue} back to red}".styleMe())

Veya, dize prototipini genişletmek istemiyorsanız, diğer 3 seçenekten herhangi birini yapabilirsiniz:

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'da renk kodlarını kullanabilirsiniz:

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

Neden kullanılmayan require?
jhpratt GOFUNDME RELICENSING

Birkaç yıl önceydi. Stdout yazma için gerekliydi, belki şimdi zaten varsayılan olarak içe aktarılmıştı.
Kenjy Minamori

Ah tamam. Sadece merak ettim çünkü syshiçbir yerde kullanılmamış gibiydi . Aslında bugünlerde gerekli değil!
jhpratt GOFUNDME RELICENSING

1

düğüm Colorify

Metinleri renkli olarak yazdırma ve ayrıca kalın, yanıp sönme vb. Metin biçimlendirme işlevleri sunar.


3
Verdiğiniz bağlantı soruyu cevaplayabilir. Bağlantıdaki sayfanın ileride dolması durumunda, çözümünüzün önemli parçalarını doğrudan cevabınıza koymak en iyisidir.
Kmeixner

1

@ Daniel'in cevabını gerçekten beğendim, ancak console.log {color} işlevleri normal console.log ile aynı şekilde çalışmadı. Birkaç değişiklik yaptım ve şimdi yeni işlevlere yönelik tüm parametreler console.log'a (ayrıca renk kodlarına) geçirilecek.

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:

Basit bir şekilde, mesaja zaman rengi ekleyerek, kodunuzu değiştirmeniz gerekmez, console.log ('msg') veya console.err ('hata') kullanın

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

resim açıklamasını buraya girin


0

Windows CMD kullanıyorsanız, terminal Özellikleri / Renkleri'ne (sol üst CMD) gidin ve rahatsız edici rengin RGB değerini yeniden tanımlayın. Benim durumumda, soldan beşinci renk karesi olduğuna inanıyorum (222,222,222). O anda seçili olan "sistem" rengini yeniden tanımladığınız için seçili olan radyo düğmesinin Ekran Metni veya Ekran Arka Planı göstermesi önemli değildir. Rengi değiştirdikten sonra, Tamam'ı tıklamadan önce arka plan veya metin için tercih edilen rengi seçmeyi unutmayın.

Değişiklikten sonra Düğümden gelen tüm kırmızımsı mesajlar (benim durumumda Ember) açıkça görülebilir.


0

Bu, Windows 10 (belki 7 için) için bir yaklaşımdır ve cmd, npm terminalinin kendisi için renk düzenini (tema) değiştirir, sadece belirli bir uygulama için konsol çıktısını değil.

Muhtemelen Windows şemsiyesi altında geliştirilen çalışan Windows eklentisini - Renk Aracı'nı buldum . Açıklaması mevcuttur linke .

Sistem ortamı yolu değişkenine colortool dizini ekledim ve şimdi terminali (NodeJs komut istemi, cmd) başlattığımda kullanılabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.