Colorize Terminal Output Nodejs
Tags: javascript, codenewbie, beginners, webdev
Published: 2020-01-08 13:45:52

Most developers today work with the terminal. It can be fun and extremely helpful to colorize the terminal output. I have seen a couple of articles using ANSI escape codes to colorize the console output.

The module colors.js and chalk are available on npm. These packages provide extremely easy to use wrappers that make colorizing console output fun.

Let's get started with colorizing our console outputs with node packages.
But first, make sure you are in your project directory.
## colors.js
Getting started with colors.js.
### Installing colors.js
Let's add the **colors.js** to your project:
```
# via yarn
yarn add colors

# via npm
npm install colors
```
Now, within your script, require colors.js or use the **ES6** import:
```js
const colors = require
# or
import colors from 'colors'
```
### Colorize Terminal Output with colors.js
With **colors.js** you are able to add text colors, brighten text colors, give background colors and brighten background colors.
Colorizing terminal output can be done in two ways with **colors.js**.
#### Super Nifty Way
```js
const colors = require('colors')

console.log('colorizing terminal with colors.js can be fun'.red)
console.log('colors make the terminal lively.'.green)
```
#### Slightly Less Nifty Way
```js
const colors =  require('colors/safe')

console.log(colors.red('colorizing terminal with colors.js can be fun'))
console.log(colors.green('colors make the terminal lively.'))
```
#### Configuring Custom Theme
It is possible to configure your own custom theme with colors.js standard API.
##### Using Standard API
```js
const colors = require('colors')

colors.setTheme({
  info: 'blue',
  warn: 'yellow',
  success: 'green',
  debug: 'cyan',
  error: 'red'
})

console.log('ERROR: Something is wrong with your code'.error)
```
##### Using string Safe API
```js
const colors = require('colors/safe')

colors.setTheme({
  info: 'blue',
  warn: 'yellow',
  success: 'green',
  debug: 'cyan',
  error: 'red'
})

console.log(colors.error('ERROR: Something is wrong with your code'))
```
You can do more with colors.js custom themes. Check out their [GitHub repository](https://github.com/Marak/colors.js) for more.
## chalk
**chalk** package makes it easier to apply ANSI colors and styles to the terminal output.
### Installing chalk
You can add chalk to your project using **yarn** or **npm**:
```
# via yarn
yarn add chalk

# via npm
npm install chalk --save
```
### Colorizing Terminal with chalk
And within your script, require chalk with the code below:
```js
const chalk = require('chalk')
```
**chalk** package gives you the power to change text color, background color, text styles and more.
Now, let's try our hands on the wonderful features of **chalk**.
#### Changing Text Color with chalk
```js
console.log(chalk.green('colorizing terminal with chalk can be fun'))
```
#### Changing Background Color with chalk
```js
console.log(chalk.bgBlackBright('Text Background'))
```
However, it is possible to add background color and text color in a console output
```js
console.log(chalk.bgCyan.red('Text with background'))
```
#### Styling with chalk
Styling works just like colorizing output, we can add it to the chain:
```js
console.log(
  chalk.bgWhite.black.underline('Styling with chalk')
)
```
We can perform more advanced colorizing with chalk to support other colors that are not part of their 16 color pairs.
```js
console.log(
  chalk.hex('#421EDA').bgHex('#2534AD')('Advanced Colorizing')
)
```
## Conclusion
My goal is to introduce to colors.js and chalk npm packages. You can do more with these packages than I have in this post. Just check out the [colors.js](https://github.com/Marak/colors.js) and [chalk](https://github.com/chalk/chalk) repository for some more advanced steps.

You can also check out my post on [Styling Console Messages](https://anansewaa.com/styling-console-messages/).