DEV Community

Cover image for node.js: Console Colors 101
Gergő Móricz
Gergő Móricz

Posted on

node.js: Console Colors 101

We've all seen a module or a node.js application that has changed the color of the command prompt font. Heck, even npm changes the color of it's text!

I will show you how to do it.

There are two ways of doing this:

  • Using a module
  • Not using a module

The easy way (with module)

You can go ahead and grab chalk:

npm install chalk

Using chalk is easy! For example, if you want to console.log with blue, then do this:

const chalk = require('chalk');

console.log(chalk.blue('Hello world!'));
Enter fullscreen mode Exit fullscreen mode

Easy, isn't it?

For more documentation, visit the guide.

The not-so-easy way (without a module)

Wanna crank down that dependency list? Noone wants to see code that has too many requires! Go ahead, follow me.

This is a bit messy, but this is basically what the other modules do:

Yes, that long string does the coloring. Here is an explanation:

The "\x1b[36m" part makes your text cyan, the "%s" part gets replaced with your text, and the "\x1b[0m" part resets the colors the way they should be.

But don't worry, you don't have to memorize the color codes. Instead, here is a reference!

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"
Enter fullscreen mode Exit fullscreen mode

Hope this tutorial helped someone out there. Thanks for reading!

Top comments (6)

Collapse
 
mikeralphson profile image
Mike Ralphson

I've found it's useful to honour (or should that be honor?) the NODE_DISABLE_COLORS environment variable so users can easily disable this feature if it's not wanted. Documentation here.

I simply define colours as:

var red = process.env.NODE_DISABLE_COLORS ? '' : '\x1b[31m';
var green = process.env.NODE_DISABLE_COLORS ? '' : '\x1b[32m';
var normal = process.env.NODE_DISABLE_COLORS ? '' : '\x1b[0m';
Enter fullscreen mode Exit fullscreen mode


`

Collapse
 
mogery profile image
Gergő Móricz

Nice addition!

Collapse
 
lordscarlet profile image
Doug Moore

So it uses ANSI sequences? Sweet. Does it support more than just the color codes?

Collapse
 
mogery profile image
Gergő Móricz

Yes! There is an article about text positioning coming out very soon.

Collapse
 
lordscarlet profile image
Doug Moore

FWIW, I am working on a node.js version of sixteencolors.net

Thread Thread
 
mogery profile image
Gergő Móricz

Posted the position article if you're interested.