Come cambiare il colore del carattere della console di node.js?


571

Ho dovuto cambiare il colore di sfondo della console in bianco a causa di problemi agli occhi, ma il carattere è di colore grigio e rende i messaggi illeggibili. Come posso cambiarlo?


4
Nello stesso posto in cui hai già cambiato il colore di sfondo, puoi cambiare gli altri colori.
Dan D.

@hippietrail avete trovato una soluzione migliore o potete accettare una delle risposte a questa domanda?
nelsonic,

Come si fa in puro Node.js? Senza colori o altri pacchetti.
Costa

1
Sto avendo lo stesso problema. Ho il sospetto che @Viclib stia usando Windows (come lo sono io), motivo per cui le istruzioni per cambiare i colori dei terminali sono un concetto estraneo. Il prompt dei comandi di Windows consente di modificare 2 colori di primo piano e 2 di sfondo. Il nodo utilizza altri colori che il prompt dei comandi di Windows non può definire.
Greg Woods,

2
In seguito ho scoperto che il mio modello mentale per il funzionamento dei colori del prompt dei comandi di Windows era completamente sbagliato. Ho ipotizzato erroneamente (a causa di una terribile UI) che puoi cambiare solo i colori di primo piano e di sfondo. Questo è sbagliato. Tutti e 16 i colori possono essere utilizzati da un'app console ed è fondamentale scegliere colori sensibili per tutti i 16 e utilizzare SEMPRE la tessera colore 1 come sfondo (e la tessera 9 per "sfondo popup"). Questa è stata una tale rivelazione per me, ho scritto un post sul blog (un evento davvero raro). gregwoods.co.uk/2015/04/…
Greg Woods

Risposte:


1151

Di seguito puoi trovare i colori di riferimento del testo da comandare durante l'esecuzione dell'applicazione node.js:

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

Nota %sè dove viene iniettato nella stringa (il secondo argomento). \x1b[0mreimposta il colore del terminale in modo che non continui più a essere il colore scelto dopo questo punto.

Riferimento colori

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"

MODIFICARE:

Ad esempio, \x1b[31mè una sequenza di escape che verrà intercettata dal terminale e gli imporrà di passare al colore rosso. In realtà, \x1bè il codice per il carattere di controllo non stampabile escape . Le sequenze di escape che si occupano solo di colori e stili sono anche conosciute come codice di escape ANSI e sono standardizzate, quindi dovrebbero (dovrebbero) funzionare su qualsiasi piattaforma.

Wikipedia ha un bel confronto su come i diversi terminali visualizzano i colori https://en.wikipedia.org/wiki/ANSI_escape_code#Colors


42
Ho accettato questa domanda perché è la più pigra che funziona, ha molti colori e nessuna dipendenza. Se vuoi una soluzione più semplice con dipendenze, controlla la risposta di @ nelsonic che suggerisce librerie molto semplici.
MaiaVictor,

7
Dove hai trovato questo riferimento? Cosa significa ogni carattere in un valore di colore?
giorgos.nl,

10
@ giorgos29cm → vedi qui . A proposito, aggiungi un 1;per i colori vivaci, cioè "\ x1b [1; 34m" == azzurro ...
Frank Nocke

2
Come devo impedire la visualizzazione di questi caratteri quando stampo su file anziché su console?
Sky

1
Curiosamente, su Windows 10 PowerShell il giallo diventa bianco? Il giallo può essere fatto funzionare; lo fa il gesso . Tuttavia, questa risposta mi ha salvato dall'aggiunta del gesso come dipendenza per alcuni log miseri, grazie!
webelo

318

Sono disponibili più pacchetti per la formattazione del testo della console in Node.js. I più popolari sono:

Uso:


GESSO:

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

COLORI:

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

Molte persone hanno notato la loro disapprovazione per l' colorsalterazione del prototipo String . Se preferisci che i tuoi prototipi vengano lasciati soli, utilizza invece il codice seguente:

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

1
Ha anche un semplice supporto leggero per gli stili!
hippietrail,

2
@devundef concorda con te sull'aggiunta di metodi all'oggetto String. Vale la pena menzionarlo all'autore del modulo su GitHub. E / o suggerendo un modulo / metodo alternativo con un livello simile di semplicità.
nelsonic,

3
Mentre sono d'accordo che la risposta di MattJohnson (sovrascrivendo i colori predefiniti del metodo util.inpect - vedi sotto) è meglio dell'uso del modulo Colors, il modulo Colors richiede una configurazione zero e si adatta alle esigenze della stragrande maggioranza degli utenti che sta semplicemente cambiando il colore della console .log output. Certo, "pasticciare con gli built-in" è un male (d'accordo al 100%) ma nessun codice distribuito dovrebbe contenere istruzioni console.log, quindi cerchiamo di essere pragmatici al riguardo. @devundef I metodi String aggiuntivi aggiunti al pasticcio prototipo con i test delle unità?
nelsonic,

8
I colori var colors = require('colors/safe');colors.red('left string all alone')
ce l'

1
Ben notato @Laoujin - la prossima volta sentiti libero di proporre una modifica. Ho modificato l'esempio di codice per Colors nella risposta.
nelsonic,

155

Se vuoi cambiare i colori direttamente da solo senza un modulo, prova

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

Innanzitutto \x1b[36mper cambiare i colori 36e poi tornare al colore terminale 0.

Ecco un elenco di codici colore ANSI


15
Grazie per aver menzionato come ripristinare il colore indietro.
Vasyl Boroviak,


1
Che ne dici di cambiare lo stile del carattere, come il rosso grassetto, il corsivo verde?
uzay95,

1
Funzionava perfettamente, non si sbagliava con i codici di fuga ottali che venivano prevenuti in modalità rigorosa.
Florrie,

70

per colorare il tuo output Puoi usare esempi da lì:
https://help.ubuntu.com/community/CustomizingBashPrompt

Anche un Gist per nodeJs

Ad esempio, se vuoi che parte del testo sia di colore rosso, esegui semplicemente console.log con:

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

Sulla base di questo ho creato l'estensione "colog" per Node.js. Puoi installarlo usando:

npm install colog

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


1
Credo che l'OP non voglia stampare un testo specifico in un colore specifico, ma per impostazione predefinita tutto l'output del Terminale deve essere di un colore diverso, forse anche il nero dato lo sfondo bianco.
cwoebker,

Quindi dovrebbe modificare le impostazioni del suo terminale. Sono sicuro che è possibile su Linux. Nessuna idea su Windows.
Dariuszp,

14
\033[31mfunziona ma \033[91mnon funziona. Per Ubuntu Terminal dovrebbe essere \033[0m.
Redsandro,

4
E le fughe ottali non sembrano funzionare:error: octal escape sequences "\033[31mServer ready @ #{app.get('port')}\033[91m" are not allowed
jcollum,

4
\033[0mdovrebbe essere usato per riportare il testo alla normalità, non\033[91m
mollerhoj,

31

Questo è un elenco di colori disponibili (sfondo, primo piano) nella console con le azioni disponibili (ripristino, inversione, ...).

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

Usalo come segue:

 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

Puoi anche installare:

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

L'IT ti darà un output più vicino alla console del lato client:

inserisci qui la descrizione dell'immagine


1
Sto usando lo stesso e funziona bene, ma per qualche motivo Dim non fa nulla? Voglio l'effetto del colore grigio in modo che si pensi che userebbe il colore bianco con effetto fioco si tradurrebbe in colore grigio ma solo il colore bianco non stampa attenuato. Qualche idea?
Angad,

28

Per questa documentazione , è possibile modificare i colori in base al tipo di dati dell'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 ] }

Questi sembrano essere codici di escape ANSI SGR, in cui il primo numero è il codice da emettere prima dell'output e il secondo numero è il codice da emettere dopo. Quindi, se guardiamo la tabella dei codici ANSI SGR su Wikipedia , vedrai che la maggior parte di questi inizia con un numero 30-37 per impostare il colore di primo piano e termina con 39 per ripristinare il colore di primo piano predefinito.

Quindi una cosa che non mi piace è quanto siano oscuri alcuni di questi. Soprattutto le date. Vai avanti e prova new Date()nella console. Il magenta scuro su nero è davvero difficile da leggere. Sostituiamolo invece con un magenta chiaro.

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

Adesso quando ci provi new Date() , l'output è molto più leggibile.

Se desideri impostare i colori automaticamente all'avvio del nodo, crea uno script che avvii il sostituto, in questo modo:

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

Salvare questo file (ad esempio, init.js), quindi eseguirenode.exe init.js . Imposta i colori e avvia il prompt dei comandi di node.js.

(Grazie a loganfsmyth in questa risposta per l'idea di sostituzione .)


19

Questa libreria di Sindre Sorhus è la migliore al momento:

gesso

  • Altamente performante
  • Non si estende String.prototype
  • API espressiva
  • Capacità di nidificare gli stili
  • Pulito e concentrato
  • Rileva automaticamente il supporto del colore
  • Mantenuto attivamente
  • Utilizzato da oltre 5500 moduli

2
sì, ma è un'altra dipendenza
futuro del

18

I codici colore sono come menzionati

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"

Ad esempio, se vuoi avere un testo fioco, rosso con sfondo blu, puoi farlo in Javascript in questo modo:

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

L'ordine dei colori e degli effetti sembra non essere così importante, ma ricorda sempre di ripristinare i colori e gli effetti alla fine.


Anche il lampeggiamento di @Sergey non funziona per me, sembra che non sia disponibile in Node
Sv443

@ Sv443 Ma funziona sullo screenshot :) E la domanda era su Node. Ho pensato che non funzionasse solo nella console di Windows. Quale sistema operativo usi?
Sergey

2
@Sergey Sto usando Windows e ho provato in CMD e Powershell ed entrambi non funzionano
Sv443

@Sergey I miei screenshot provengono dall'applicazione del terminale MacOS. Credo che questo sia qualcosa che la tua applicazione shell dovrebbe supportare. Se stai usando Windows, suggerirei di provare a installare Cygwin e provare questo su bash. Sono curioso di sapere anche di questo.
Shnd

@Shnd Non sono sicuro che sia lo stesso, ma l'ho provato su git-bash e neanche ha funzionato.
Sergey,

14

Un pratico one-liner che ho scritto per gli script npm che non possono avere dipendenze:

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

Modifica: r,g,b,w,c,m,y,k sta per rosso, verde, blu, bianco, ciano, magenta, giallo e blac (k)


Sembra utile ma per favore puoi spiegarlo ulteriormente? Modalità detective attivata: ah ok, rgbwc ... sta per rosso, verde, blu, bianco, ciano, magenta, giallo ek?
538ROMEO

11

emoji

Puoi usare i colori per il testo come altri citati nelle loro risposte.

Puoi invece usare gli emoji ! ad esempio è possibile utilizzare È possibile utilizzare ⚠️per i messaggi di avviso e 🛑per i messaggi di errore.

O semplicemente usa questi taccuini come colore:

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

Bonus:

Questo metodo ti aiuta anche a scansionare e trovare rapidamente i log direttamente nel codice sorgente .

Ma il carattere emoji predefinito di Linux non è colorato per impostazione predefinita e potresti voler renderli colorati, prima.


10

Per una popolare alternativa ai colori che non interferisce con i metodi integrati dell'oggetto String, ti consiglio di dare un'occhiata a cli-color .

Include sia colori che stili concatenabili come grassetto, corsivo e sottolineato.

Per un confronto di vari moduli in questa categoria, vedere qui .


10

Nessuna libreria, nessuna complicazione, semplicemente:

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

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

1
Non è semplice scoprire che non funziona con gli oggetti come li gestisce la console e che non rispetta i tipi di flusso della console o il supporto TTY, il che crea ulteriori problemi. È solo un trucco che porterà molti problemi lungo la strada.
vitaly-t

Questo è ciò che serve a
JSON.stringify

6

Esistono due modi per esaminare la modifica dei colori per una console Node.js oggi.

Uno è attraverso le librerie di uso generale che possono decorare una stringa di testo con tag di colore, che vengono quindi emessi attraverso lo standard console.log .

Le migliori librerie per questo oggi:

E dall'altra parte: applicare patch ai metodi della console esistenti. Uno di questi biblioteca - manakin consente di impostare automaticamente i colori standard per tutti i vostri metodi di console ( log, warn, errore info).

Una differenza significativa rispetto alle librerie di colori generiche: può impostare i colori a livello globale o locale, mantenendo la sintassi e il formato di output coerenti per ogni metodo della console Node.js, che viene quindi utilizzato senza dover specificare i colori, poiché sono tutti impostati automaticamente .

Ho dovuto cambiare il colore di sfondo della console in bianco a causa di problemi agli occhi, ma il carattere è di colore grigio e rende i messaggi illeggibili. Come posso cambiarlo?

Specificamente per il tuo problema, ecco la soluzione più semplice:

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

Imposta il colore nero per ogni console.logchiamata nella tua applicazione. Vedi più codici colore .

Colori predefiniti utilizzati da manakin :

inserisci qui la descrizione dell'immagine


6

Ho sovraccaricato i metodi della console.

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

L'output è.

inserisci qui la descrizione dell'immagine


Questo non funziona con la sintassi di formattazione. Esempio: console.info('Hello %s', 'World!')dovrebbe visualizzare Hello World!, e non Hello %s World!.
vitaly-t

@ vitaly-t prova questo : dovrebbe funzionare.
Sergey,

5

Ho risposto a questa domanda e volevo usare alcuni colori su stdout senza dipendenze. Questo combina alcune delle altre grandi risposte qui.

Ecco cosa ho. (Richiede il nodo v4 o superiore)

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

Basta richiedere il file, quindi usarlo in questo modo:

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

I codici colore predefiniti sono disponibili qui


1
non funzionerà correttamente se reindirizzato in un file di registro, ad esempio.
vitaly-t

4

paint-console

Registro colorabile semplice. Supporto ispeziona oggetti e aggiornamento a riga singola Questo pacchetto ridisegna la console.

installare

npm install paint-console

uso

require('paint-console');

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

dimostrazione


4

Non voglio alcuna dipendenza per questo e solo questi hanno funzionato per me su OS X. Tutti gli altri esempi dalle risposte qui mi hanno dato Octal literalerrori.

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"

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


4

Ho trovato questa risposta sopra ( https://stackoverflow.com/a/41407246/4808079 ) molto utile, ma incompleta. Se hai mai desiderato colorare qualcosa una volta, credo che andrebbe bene, ma penso che condividerlo in una forma funzionale eseguibile sia molto più applicabile ai casi d'uso della vita reale.

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

Usalo in questo modo:

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

Quindi usalo come:

console.logBgGreen(" grüner Hintergrund ")

4

Questo dipende in qualche modo dalla piattaforma su cui ti trovi. Il modo più comune per farlo è stampare le sequenze di escape ANSI. Per un semplice esempio, ecco un po 'di codice Python dagli script di build di 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'
}

Per usare un codice come questo, puoi fare qualcosa del genere

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

Ottengo "Le sequenze di escape ottali non sono consentite in modalità rigorosa."
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

Puoi anche usare colorworks .

Uso:

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

Per semplificare la vita, puoi anche fare una funzione con essa.

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

Ora puoi fare:

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

2

Coolors

È abbastanza buono per l'uso o l'estensione. Puoi usare semplicemente:

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

O con la configurazione:

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

E sembra davvero divertente estendere:

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

Visualizza il modulo Coolors


questo non funzionerà correttamente in Node.js quando, ad esempio, viene reindirizzato in un file di registro.
vitaly-t

2

Ho creato il mio modulo, StyleMe . L'ho fatto in modo da poter fare molto con una piccola digitazione. Esempio:

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.

Può anche essere nidificato:

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

In alternativa, se non si desidera estendere il prototipo di stringa, è possibile utilizzare solo una delle altre 3 opzioni:

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

1

In Ubuntu puoi semplicemente usare i codici colore:

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

Perché l'inutilizzato require?
jhpratt GOFUNDME RELICENSING,

E 'stato un paio d'anni fa. Era necessario per la scrittura stdout, forse ora è già importato per impostazione predefinita.
Kenjy Minamori,

Ah ok. Ero solo curioso perché non è come se sysfosse usato da nessuna parte. In realtà non è necessario al giorno d'oggi, però!
jhpratt GOFUNDME RELICENSING,

1

nodo Colorazione

Fornisce funzioni per stampare testi a colori e anche per formattare testi come grassetto, lampeggio, ecc.


3
Mentre il link fornito può rispondere alla domanda. È meglio inserire le parti essenziali della soluzione direttamente nella risposta nel caso in cui la pagina del link scada in futuro.
Kmeixner,

1

Mi è piaciuta molto la risposta di Daniel, ma le funzioni console.log {color} non hanno funzionato allo stesso modo della console.log normale. Ho apportato alcune modifiche e ora tutti i parametri delle nuove funzioni verranno passati a console.log (così come i codici colore).

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:

Modo semplice, aggiungendo il colore dell'ora al messaggio, non è necessario modificare il codice, utilizzare keep console.log ('msg') o console.err ('errore')

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

inserisci qui la descrizione dell'immagine


0

Se si utilizza Windows CMD, andare al terminale Proprietà / Colori (CMD in alto a sinistra) e quindi ridefinire il valore RGB del colore offensivo. Nel mio caso credo che sia il quinto quadrato di colore da sinistra, che ho cambiato in (222.222.222). Non importa se il pulsante di opzione attualmente selezionato mostra Testo dello schermo o Sfondo dello schermo mentre si ridefinisce il colore specifico del "sistema". Una volta modificato il colore, non dimenticare di selezionare nuovamente il colore preferito per lo sfondo o il testo prima di fare clic su OK.

Dopo la modifica, tutti questi messaggi rossastri da Nodo (Ember nel mio caso) sono chiaramente visibili.


0

Questo è un approccio per Windows 10 (forse per 7) e cambia la combinazione di colori (tema) per cmd, il terminale npm stesso, non solo l'output della console per una particolare app.

Ho trovato il plug-in di Windows funzionante - Color Tool , che è presumibilmente sviluppato sotto l'ombrello di Windows. Una descrizione è disponibile al link .

Ho aggiunto la directory colortool nella variabile di percorso dell'ambiente di sistema e ora è disponibile ogni volta che avvio terminal (prompt dei comandi di NodeJs, cmd).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.