Build status Tests coverage npm version

cli-color

Yet another colors and formatting for the console solution

Colors, formatting and other goodies for the console. This package won't mess with built-ins and provides neat way to predefine formatting patterns, see below.

Installation

$ npm install cli-color

Usage

Usage:

javascript var clc = require("cli-color");

Output colored text:

javascript console.log(clc.red("Text in red"));

Styles can be mixed:

javascript console.log(clc.red.bgWhite.underline("Underlined red text on white background."));

Styled text can be mixed with unstyled:

javascript console.log(clc.red("red") + " plain " + clc.blue("blue"));

Styled text can be nested:

javascript console.log(clc.red("red " + clc.blue("blue") + " red"));

Best way is to predefine needed stylings and then use it:

```javascript var error = clc.red.bold; var warn = clc.yellow; var notice = clc.blue;

console.log(error("Error!")); console.log(warn("Warning")); console.log(notice("Notice")); ```

Note: No colors or styles are output when NO_COLOR env var is set

Supported are all ANSI colors and styles:

Styles

Styles will display correctly if font used in your console supports them.

Colors

ForegroundBackground
blackbgBlack
redbgRed
greenbgGreen
yellowbgYellow
bluebgBlue
magentabgMagenta
cyanbgCyan
whitebgWhite
Bright variants
ForegroundBackground
blackBrightbgBlackBright
redBrightbgRedBright
greenBrightbgGreenBright
yellowBrightbgYellowBright
blueBrightbgBlueBright
magentaBrightbgMagentaBright
cyanBrightbgCyanBright
whiteBrightbgWhiteBright
xTerm colors (256 colors table)

Not supported on Windows and some terminals. However if used in not supported environment, the closest color from basic (16 colors) palette is chosen.

Usage:

javascript var msg = clc.xterm(202).bgXterm(236); console.log(msg("Orange text on dark gray background"));

Color table:

Screenshot 2022-07-04 at 12 28 18

Reset

Terminal can be cleared with clc.reset

javascript process.stdout.write(clc.reset);

Erase

clc.erase.screen

Entire screen

javascript process.stdout.write(clc.erase.screen);

clc.erase.screenLeft

Left portion of a screen

javascript process.stdout.write(clc.erase.screenLeft);

clc.erase.screenRight

Right portion of a screen

javascript process.stdout.write(clc.erase.screenRight);

clc.erase.line

Current line

javascript process.stdout.write(clc.erase.line);

clc.erase.lineRight

Right portion of current line

javascript process.stdout.write(clc.erase.lineRight);

clc.erase.lineLeft

Left portion of current line

javascript process.stdout.write(clc.erase.lineLeft);

Move around functions

clc.move(x, y)

Move cursor x columns and y rows away. Values can be positive or negative, e.g.:

javascript process.stdout.write(clc.move(-2, -2)); // Move cursors two columns and two rows back

clc.move.to(x, y)

Absolute move. Sets cursor position at x column and y row

javascript process.stdout.write(clc.move.to(0, 0)); // Move cursor to first row and first column in terminal window

clc.move.up(n)

Move cursor up n rows

javascript process.stdout.write(clc.move.up(2));

clc.move.down(n)

Move cursor down n rows

javascript process.stdout.write(clc.move.down(2));

clc.move.right(n)

Move cursor right n columns

javascript process.stdout.write(clc.move.right(2));

clc.move.left(n)

Move cursor left n columns

javascript process.stdout.write(clc.move.left(2));

clc.move.lines(n)

Move cursor n lines forward if n is positive, otherwise n lines backward, and place it at line beginning

javascript process.stdout.write(clc.move.lines(2));

clc.move.top

Move cursor to top of a screen

javascript process.stdout.write(clc.move.top);

clc.move.bottom

Move cursor to bottom of a screen

javascript process.stdout.write(clc.move.bottom);

clc.move.lineBegin

Move cursor to begin of a line

javascript process.stdout.write(clc.move.lineBegin);

clc.move.lineEnd

Move cursor to end of a line

javascript process.stdout.write(clc.move.lineEnd);

Terminal characteristics

clc.windowSize.width

Returns terminal width

clc.windowSize.height

Returns terminal height

Additional functionalities

clc.slice(str[, begin[, end]])

Slice provided string with preservation of eventual ANSI formatting

```javascript var clc = require("cli-color");

var str = clc.bold("foo") + "bar" + clc.red("elo"); var sliced = clc.slice(str, 1, 7); // Same as: clc.bold('oo') + 'bar' + clc.red('e') ```

clc.strip(formatedText)

Strips ANSI formatted string to plain text

```javascript var ansiStrip = require("cli-color/strip");

var plain = ansiStrip(formatted); ```

clc.getStrippedLength(str)

Get actual length of ANSI-formatted string

```javascript var clc = require("cli-color");

var str = clc.bold("foo") + "bar" + clc.red("elo"); clc.getStrippedLength(str); // 9 ```

clc.art(text, styleConf)

Create a text-graphical art. Within styleConf, string replacements needs to be defined, which are then used to convert text to styled graphical text.

```javascript var text = ".........\n" + ". Hello .\n" + ".........\n"; var style = { ".": clc.yellowBright("X") };

process.stdout.write(clc.art(text, style)); ```

clc.columns(data[, options])

Outputs aligned table of columns.

data is expected to be an array (or other iterable structure) of rows, where each row is also an array (or other iterable structure) of content to display.

Supported options:

```javascript var clc = require("cli-color");

process.stdout.write( clc.columns([ [clc.bold("First Name"), clc.bold("Last Name"), clc.bold("Age")], ["John", "Doe", 34], ["Martha", "Smith", 20], ["Jan", "Kowalski", 30] ]) );

/* Outputs:

First Name | Last Name | Age John | Doe | 34 Martha | Smith | 20 Jan | Kowalski | 30 */ ```

throbber(write, interval[, format])

Writes throbber string to write function at given interval. Optionally throbber output can be formatted with given format function

```javascript var setupThrobber = require("cli-color/throbber");

var throbber = setupThrobber(function (str) { process.stdout.write(str); }, 200);

throbber.start();

// at any time you can stop/start throbber throbber.stop(); ```

Tests

$ npm test

Security contact information

To report a security vulnerability, please use the Tidelift security contact. Tidelift will coordinate the fix and disclosure.

Contributors


Get professional support for cli-color with a Tidelift subscription
Tidelift helps make open source sustainable for maintainers while giving companies
assurances about security, maintenance, and licensing for their dependencies.