Bagaimana cara mengubah warna font konsol node.js?

570

Saya harus mengubah warna latar belakang konsol menjadi putih karena masalah mata, tetapi fontnya berwarna abu-abu dan membuat pesannya tidak dapat dibaca. Bagaimana saya bisa mengubahnya?

Viktor Maia
sumber
4
Di tempat yang sama dengan yang Anda gunakan sebelumnya untuk mengubah warna latar belakang, Anda dapat mengubah warna lainnya.
Dan D.
@hippietrail sudahkah kalian menemukan solusi yang lebih baik atau dapatkah Anda menerima salah satu jawaban untuk pertanyaan ini?
nelsonic
Bagaimana Anda melakukan ini di Node.js murni? Tanpa warna atau paket lainnya.
Costa
1
Saya mempunyai masalah yang sama. Saya curiga @Viclib menggunakan windows (seperti saya), itulah sebabnya instruksi untuk mengubah warna terminal adalah konsep asing. Windows command prompt memungkinkan mengubah 2 warna foreground dan 2 latar belakang. Node menggunakan warna lain yang tidak dapat ditentukan oleh perintah jendela.
Greg Woods
2
Saya kemudian menemukan bahwa model mental saya tentang cara warna command prompt Windows bekerja, benar-benar salah. Saya berasumsi tidak benar (karena UI yang mengerikan) bahwa Anda hanya dapat mengubah warna latar depan, latar belakang. Ini salah. Semua 16 warna dapat digunakan oleh aplikasi konsol, dan sangat penting untuk memilih warna yang masuk akal untuk semua 16, dan untuk SELALU menggunakan ubin warna 1 sebagai latar belakang (dan ubin 9 untuk "latar belakang popup"). Ini adalah wahyu bagi saya, saya menulis posting blog (peristiwa yang jarang terjadi). gregwoods.co.uk/2015/04/...
Greg Woods

Jawaban:

1151

Di bawah ini Anda dapat menemukan referensi warna teks ke perintah ketika menjalankan aplikasi node.js:

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

Catatan %sadalah tempat di mana string (argumen kedua) akan disuntikkan. \x1b[0mmengatur ulang warna terminal sehingga tidak terus menjadi warna yang dipilih lagi setelah titik ini.

Referensi warna

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"

EDIT:

Misalnya, \x1b[31madalah urutan pelarian yang akan dicegat oleh terminal Anda dan memerintahkannya untuk beralih ke warna merah. Bahkan, \x1badalah kode untuk karakter kontrol yang tidak dapat dicetak escape . Escape sequence berurusan hanya dengan warna dan gaya yang juga dikenal sebagai kode pelarian ANSI dan distandarisasi, sehingga mereka (harus) bekerja pada platform apa pun.

Wikipedia memiliki perbandingan yang bagus tentang bagaimana terminal yang berbeda menampilkan warna https://en.wikipedia.org/wiki/ANSI_escape_code#Colors

Bud Damyanov
sumber
42
Saya telah menerima pertanyaan ini karena itu adalah yang paling malas yang berfungsi, memiliki banyak warna dan tidak ada ketergantungan. Jika Anda ingin solusi yang lebih sederhana dengan dependensi, periksa jawaban @ nelsonic yang menyarankan lib yang sangat mudah.
MaiaVictor
7
Di mana Anda menemukan referensi ini? Apa arti setiap karakter dalam nilai warna?
giorgos.nl
10
@ giorgos29cm → lihat di sini . Btw, tambahkan 1;warna cerah, yaitu "\ x1b [1; 34m" == biru muda ...
Frank Nocke
2
Bagaimana saya mencegah agar karakter ini tidak muncul saat mencetak ke file daripada konsol?
Langit
1
Anehnya, pada Windows 10 PowerShell kuning muncul sebagai putih? Kuning bisa dibuat bekerja; kapur melakukannya. Namun, jawaban ini menyelamatkan saya dari menambahkan kapur sebagai ketergantungan untuk beberapa log, terima kasih!
webelo
318

Ada beberapa paket yang tersedia untuk memformat teks konsol di Node.js. Yang paling populer adalah:

Pemakaian:


KAPUR:

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

WARNA:

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

Banyak orang telah mencatat ketidaksetujuan mereka untuk colorsmengubah prototipe String . Jika Anda lebih suka prototipe dibiarkan sendiri, gunakan kode berikut sebagai gantinya:

const colors = require('colors/safe');
console.log(colors.red('Text in red'));
nelsonic
sumber
1
Bahkan memiliki dukungan ringan sederhana untuk gaya!
hippietrail
2
@dundundef setuju dengan Anda tentang menambahkan metode ke objek String. Mungkin patut disebutkan bahwa kepada penulis modul di GitHub. Dan / Atau menyarankan modul / metode alternatif dengan tingkat kesederhanaan yang serupa.
nelsonic
3
Sementara saya setuju bahwa jawaban MattJohnson (menimpa warna standar metode util.inpect - lihat di bawah) lebih baik daripada menggunakan modul Warna, modul Warna memerlukan pengaturan nol dan sesuai dengan kebutuhan sebagian besar pengguna yang hanya mengubah warna konsol .log output. Tentu, "bermain-main dengan built-in" buruk (setuju 100%) tetapi tidak ada kode yang digunakan harus berisi pernyataan console.log, jadi mari kita bersikap pragmatis tentang ini. @devundef Apakah metode String tambahan ditambahkan ke kekacauan prototipe dengan pengujian unit Anda?
nelsonic
8
Warna memiliki itu sekarang: var colors = require('colors/safe');dan kemudian gunakancolors.red('left string all alone')
Laoujin
1
@Laoujin terlihat dengan baik - lain kali jangan ragu untuk mengajukan perubahan. Saya telah mengubah contoh kode untuk Warna dalam jawabannya.
nelsonic
155

Jika Anda ingin mengubah warna sendiri secara langsung tanpa modul, cobalah

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

Pertama \x1b[36muntuk mengubah warna ke 36dan kemudian kembali ke warna terminal 0.

Berikut daftar kode warna ANSI

Henry Tseng
sumber
15
Terima kasih telah menyebutkan cara mengatur ulang warna kembali.
Vasyl Boroviak
25
Berikut adalah kode terminal ANSI, telepathy.freedesktop.org/doc/telepathy-glib/…
Eat at Joes
1
Bagaimana dengan mengubah gaya font, seperti tebal merah, hijau miring?
uzay95
1
Bekerja dengan sempurna, tidak mengacaukan kode lolos oktal dicegah dalam mode ketat.
Florrie
70

untuk mewarnai hasil Anda, Anda dapat menggunakan contoh dari sana:
https://help.ubuntu.com/community/CustomizingBashPrompt

Juga inti untuk nodeJs

Sebagai contoh jika Anda ingin bagian dari teks dalam warna merah, lakukan saja console.log dengan:

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

Berdasarkan itu saya telah membuat ekstensi "colog" untuk Node.js. Anda dapat menginstalnya menggunakan:

npm install colog

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

Dariuszp
sumber
1
Saya percaya OP tidak ingin mencetak teks tertentu dalam warna tertentu tetapi secara default semua keluaran Terminal berada dalam warna yang berbeda, bahkan mungkin hitam dengan latar belakang putih.
cwoebker
Maka dia harus mengubah pengaturan terminalnya. Saya yakin itu mungkin di Linux. Tidak tahu tentang Windows.
Dariuszp
14
\033[31mbekerja tetapi \033[91mtidak. Untuk Terminal Ubuntu seharusnya \033[0m.
Redsandro
4
Dan pelarian oktal tampaknya tidak berhasil:error: octal escape sequences "\033[31mServer ready @ #{app.get('port')}\033[91m" are not allowed
jcollum
4
\033[0mharus digunakan untuk mengembalikan teks ke normal, bukan\033[91m
mollerhoj
31

Ini adalah daftar warna yang tersedia (latar belakang, latar depan) di konsol dengan tindakan yang tersedia (reset, mundur, ...).

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

Gunakan sebagai berikut:

 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

Anda juga dapat menginstal:

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

Ini akan memberi Anda output lebih dekat ke konsol sisi klien:

masukkan deskripsi gambar di sini

Abdennour TOUMI
sumber
1
Saya menggunakan yang sama dan berfungsi dengan baik tetapi untuk beberapa alasan Dim tidak melakukan apa-apa? Saya ingin efek warna abu-abu jadi saya pikir akan menggunakan warna putih dengan efek redup akan menghasilkan warna abu-abu tetapi hanya warna putih yang dicetak tanpa redup. Ada ide?
Angad
28

Per dokumentasi ini , Anda dapat mengubah warna berdasarkan tipe data dari output:

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

Ini tampaknya kode pelarian ANSI SGR, di mana angka pertama adalah kode yang akan dipancarkan sebelum output, dan angka kedua adalah kode yang akan dipancarkan setelahnya. Jadi jika kita melihat grafik kode ANSI SGR di Wikipedia , Anda akan melihat bahwa sebagian besar dimulai dengan angka 30-37 untuk mengatur warna latar depan, dan berakhir di 39 untuk mengatur ulang ke warna latar depan standar.

Jadi satu hal yang saya tidak suka adalah betapa gelapnya beberapa di antaranya. Terutama kurma. Silakan dan coba new Date()di konsol. Magenta gelap pada hitam benar-benar sulit dibaca. Mari kita ubah itu menjadi magenta ringan sebagai gantinya.

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

Sekarang ketika Anda mencoba new Date(), hasilnya jauh lebih mudah dibaca.

Jika Anda ingin mengatur warna secara otomatis saat meluncurkan node, buat skrip yang meluncurkan repl, seperti ini:

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

Simpan file ini (misalnya, init.js), lalu jalankan node.exe init.js. Ini akan mengatur warna dan meluncurkan command prompt node.js.

(Terima kasih untuk loganfsmyth dalam jawaban ini untuk ide repl.)

Matt Johnson-Pint
sumber
19

Perpustakaan ini oleh Sindre Sorhus adalah yang terbaik saat ini:

kapur

  • Sangat berkinerja
  • Tidak meluas String.prototype
  • API Ekspresif
  • Kemampuan untuk gaya sarang
  • Bersih dan fokus
  • Mendeteksi otomatis dukungan warna
  • Dipelihara secara aktif
  • Digunakan oleh 5500+ modul
callum
sumber
2
ya tapi itu ketergantungan lain
wayofthuture
18

Kode warna seperti yang disebutkan

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"

Misalnya jika Anda ingin memiliki teks Redup, Merah dengan latar belakang Biru Anda dapat melakukannya dalam Javascript seperti ini:

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

Urutan warna dan efek tampaknya tidak begitu penting tetapi selalu ingat untuk mengatur ulang warna dan efek di akhir.

Shnd
sumber
@Sergey blink juga tidak berfungsi untuk saya, sepertinya tidak tersedia di Node
Sv443
@ Sv443 Tapi berfungsi pada screenshot :) Dan pertanyaannya adalah tentang Node. Saya pikir itu tidak berfungsi hanya di konsol Windows. OS apa yang Anda gunakan?
Sergey
2
@Sergey Saya menggunakan Windows dan mencoba CMD dan Powershell dan keduanya tidak bekerja
Sv443
@Sergey Screenshot saya berasal dari aplikasi terminal MacOS. Saya percaya ini adalah sesuatu yang harus didukung aplikasi shell Anda. Jika Anda menggunakan windows, saya sarankan mencoba menginstal Cygwin dan coba ini di bash. Saya ingin tahu tentang hal ini juga.
Shnd
@Shnd saya tidak yakin apakah itu sama, tapi saya mencobanya di git-bash dan tidak berhasil juga.
Sergey
14

Satu kalimat yang berguna yang saya tulis untuk skrip npm yang tidak dapat memiliki dependensi:

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

Sunting: r,g,b,w,c,m,y,k kependekan dari merah, hijau, biru, putih, cyan, magenta, kuning dan blac (k)

chriskelly
sumber
Tampaknya bermanfaat tetapi tolong jelaskan lebih lanjut? Mode detektif aktif: ah ok, rgbwc ... singkatan dari merah, hijau, biru, putih, cyan, magenta, kuning dan k?
538ROMEO
11

Emoji

Anda dapat menggunakan warna untuk teks seperti yang lain disebutkan dalam jawaban mereka.

Tapi Anda bisa menggunakan emoji sebagai gantinya! misalnya Anda dapat menggunakan Anda dapat menggunakan ⚠️untuk pesan peringatan dan 🛑untuk pesan kesalahan.

Atau cukup gunakan buku catatan ini sebagai warna:

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

Bonus:

Metode ini juga membantu Anda memindai dan menemukan log secara langsung dalam kode sumber .

Tetapi font emoji default linux tidak berwarna secara default dan Anda mungkin ingin membuatnya berwarna, terlebih dahulu.

Mojtaba Hosseini
sumber
10

Untuk alternatif populer untuk warna yang tidak mengacaukan metode built-in dari objek String, saya sarankan memeriksa cli-color .

Termasuk warna dan gaya rantai seperti tebal, miring, dan garis bawah.

Untuk perbandingan berbagai modul dalam kategori ini, lihat di sini .

pengguna456584
sumber
10

Tidak ada perpustakaan, tidak ada komplikasi hanya sederhana:

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

function red(s) {
    return '\033[31m' + s;
}
cara masa depan
sumber
1
Ini tidak sederhana ketika Anda mengetahui bahwa itu tidak berfungsi dengan objek cara konsol menangani mereka, dan bahwa itu tidak menghormati jenis aliran konsol atau dukungan TTY, yang menciptakan masalah lebih lanjut. Ini hanya peretasan yang akan membawa banyak masalah di jalan.
vitaly-t
Itulah tujuan JSON.stringify untuk
wayofthutureure
6

Ada dua cara untuk melihat perubahan warna untuk konsol Node.js hari ini.

Salah satunya adalah melalui perpustakaan tujuan umum yang dapat menghiasi string teks dengan tag warna, yang kemudian Anda output melalui standar console.log.

Perpustakaan teratas untuk itu hari ini:

Dan cara lain - menambal metode konsol yang ada. Salah satu perpustakaan tersebut - manakin memungkinkan Anda secara otomatis mengatur warna standar untuk semua metode konsol Anda ( log, warn, errordan info).

Satu perbedaan signifikan dari pustaka warna generik - ia dapat mengatur warna baik secara global maupun lokal, sambil tetap mempertahankan sintaks dan format output yang konsisten untuk setiap metode konsol Node.js, yang kemudian Anda gunakan tanpa harus menentukan warna, karena semuanya diatur secara otomatis .

Saya harus mengubah warna latar belakang konsol menjadi putih karena masalah mata, tetapi fontnya berwarna abu-abu dan membuat pesannya tidak dapat dibaca. Bagaimana saya bisa mengubahnya?

Khusus untuk masalah Anda, inilah solusi paling sederhana:

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

Ini akan mengatur warna hitam untuk setiap console.logpanggilan di aplikasi Anda. Lihat lebih banyak kode warna .

Warna bawaan seperti yang digunakan oleh manakin :

masukkan deskripsi gambar di sini

vitaly-t
sumber
6

Saya kelebihan metode konsol.

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

Outputnya adalah.

masukkan deskripsi gambar di sini

Ronald
sumber
Ini tidak berfungsi dengan sintaks pemformatan. Contoh: console.info('Hello %s', 'World!')seharusnya ditampilkan Hello World!, dan tidak Hello %s World!.
vitaly-t
@ vitaly-t coba ini : ini akan berhasil.
Sergey
5

Datangi pertanyaan ini, dan ingin menggunakan beberapa warna di stdout tanpa ada ketergantungan. Ini menggabungkan beberapa jawaban hebat lainnya di sini.

Inilah yang saya punya. (Membutuhkan simpul v4 atau lebih tinggi)

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

Hanya perlu file, lalu gunakan seperti ini:

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

Kode warna yang tersedia tersedia di sini

Joseph Post
sumber
1
tidak akan berfungsi dengan benar ketika dialihkan ke file log, misalnya.
vitaly-t
4

konsol cat

Log sederhana berwarna. Dukungan memeriksa objek dan pembaruan satu baris Paket ini hanya mengecat konsol.

Install

npm install paint-console

pemakaian

require('paint-console');

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

demo

borodinmk
sumber
4

Saya tidak ingin ada ketergantungan untuk ini dan hanya ini yang bekerja untuk saya di OS X. Semua sampel lain dari jawaban di sini memberi saya Octal literalkesalahan.

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"

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

Lukas Liesis
sumber
4

Saya menemukan jawaban ini di atas ( https://stackoverflow.com/a/41407246/4808079 ) sangat berguna, tetapi tidak lengkap. Jika Anda hanya ingin mewarnai sesuatu sekali, saya kira itu akan baik-baik saja, tapi saya pikir membagikannya dalam bentuk fungsional runnable jauh lebih berlaku untuk kasus penggunaan kehidupan nyata.

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

Gunakan seperti ini:

colorStringLog(Color.FgYellow, "Some Yellow text to console log");

console.log([
  colorString(Color.FgRed, "red"),
  colorString(Color.FgGreen, "green"),
  colorString(Color.FgBlue, "blue"),
].join(", "));
Seph Reed
sumber
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')();

Kemudian gunakan seperti:

console.logBgGreen(" grüner Hintergrund ")
Daniel
sumber
4

Ini agak tergantung pada platform apa Anda berada. Cara paling umum untuk melakukan ini adalah dengan mencetak urutan pelarian ANSI. Sebagai contoh sederhana, inilah beberapa kode python dari skrip pembuat 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'
}

Untuk menggunakan kode seperti ini, Anda dapat melakukan sesuatu seperti

console.log(`${bColors.WARNING} My name is sami ${bColors.ENDC}`)
Sami
sumber
Saya mendapatkan "Urutan melarikan diri oktal tidak diizinkan dalam mode ketat."
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);
Sergey
sumber
3

Anda juga dapat menggunakan pewarnaan warna .

Pemakaian:

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

Untuk membuat hidup lebih mudah, Anda juga dapat membuat fungsi dengannya.

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

Sekarang Anda bisa melakukannya:

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

Pendingin

Ini cukup bagus untuk digunakan atau diperluas. Anda dapat menggunakan:

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

Atau dengan konfigurasi:

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

Dan tampaknya sangat lucu untuk memperpanjang:

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

Lihat modul Coolors

pengguna1710825
sumber
ini tidak akan berfungsi di Node.js dengan benar ketika dialihkan ke file log, misalnya.
vitaly-t
2

Saya membuat modul saya sendiri, StyleMe . Saya membuatnya sehingga saya bisa melakukan banyak hal dengan sedikit mengetik. Contoh:

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.

Itu juga bisa bersarang:

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

Atau, jika Anda tidak ingin memperpanjang prototipe string, Anda dapat memilih salah satu dari 3 opsi lainnya:

console.log(styleme.red("a string"))
console.log("Hello, this is yellow text".yellow().end())
console.log(styleme.style("some text","red,bbl"))
Andrew
sumber
1

Di ubuntu Anda cukup menggunakan kode warna:

var sys = require('sys');
process.stdout.write("x1B[31m" + your_message_in_red + "\x1B[0m\r\n");
Kenjy Minamori
sumber
Kenapa tidak digunakan require?
jhpratt GOFUNDME RELICENSING
Itu beberapa tahun yang lalu. Itu diperlukan untuk stdout write, mungkin sekarang sudah diimpor secara default.
Kenjy Minamori
Ah, baiklah. Saya hanya ingin tahu karena tidak seperti syssedang digunakan di mana saja. Sebenarnya ini tidak perlu saat ini!
jhpratt GOFUNDME RELICENSING
1

simpul-warna

Menyediakan fungsi untuk mencetak teks dalam warna dan juga untuk melakukan format teks seperti huruf tebal, kedip, dll.

raghu
sumber
3
Sementara tautan yang Anda berikan dapat menjawab pertanyaan. Yang terbaik adalah menempatkan bagian-bagian penting dari solusi Anda secara langsung dalam jawaban Anda jika halaman pada tautan tersebut kedaluwarsa di masa depan.
Kmeixner
1

Saya sangat menyukai jawaban @ Daniel, tetapi fungsi console.log {color} tidak berfungsi dengan cara yang sama seperti console.log biasa. Saya telah membuat beberapa perubahan, dan sekarang semua parameter ke fungsi baru akan diteruskan ke console.log (juga kode warna).

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);
        }
    });
}
J. Fortman
sumber
1

2017:

Cara sederhana, menambahkan warna waktu ke pesan, Anda tidak perlu mengubah kode, gunakan keep console.log ('msg') atau 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)
    );
  };
});

masukkan deskripsi gambar di sini

stackdave
sumber
0

Jika Anda menggunakan Windows CMD kemudian pergi ke Properties / Warna terminal (kiri atas CMD) dan kemudian mendefinisikan kembali nilai RGB dari warna ofensif. Dalam kasus saya, saya percaya itu adalah kotak warna kelima dari kiri, yang saya ubah menjadi (222.222.222). Tidak masalah jika tombol radio yang dipilih saat ini menampilkan Teks Layar atau Latar Belakang Layar karena Anda baru saja mendefinisikan ulang warna "sistem" tertentu. Setelah Anda mengubah warna, jangan lupa untuk memilih kembali warna yang disukai untuk latar belakang atau teks sebelum mengklik OK.

Setelah perubahan, semua pesan kemerahan ini dari Node (Ember dalam kasus saya) terlihat jelas.

mp31415
sumber
0

Ini adalah pendekatan untuk Windows 10 (mungkin untuk 7) dan itu mengubah skema warna (tema) untuk cmd, terminal npm itu sendiri, tidak hanya output konsol untuk aplikasi tertentu.

Saya menemukan plugin Windows yang berfungsi - Color Tool , yang mungkin dikembangkan di bawah payung Windows. Deskripsi tersedia di tautan .

Saya menambahkan direktori colortool ke dalam variabel lintasan lingkungan sistem dan sekarang tersedia setiap kali saya memulai terminal (command prompt NodeJs, cmd).

Roma
sumber