Colorette

Color your terminal using pure idiomatic JavaScript.

Colorette is a Node.js library for embellishing your CLI tools with colors and styles using ANSI escape codes.

~1.5x faster than alternatives (run the benchmarks).

No wonky prototype-based method chains.

Automatic color support detection.

~80 LOC and no dependencies.

NO_COLOR friendly.

Quickstart

npm i colorette

Import the styles you need. Here's the list of styles you can use.

import { red , blue , bold } from "colorette"

Wrap your strings in one or more styles to produce the finish you're looking for.

console . log ( bold ( blue ( "Engage!" ) ) )

Mix it with template literals to interpolate variables, expressions and create multi-line strings easily.

console . log ( ` Beets are ${ red ( "red" ) } , Plums are ${ blue ( "blue" ) } , ${ bold ( "Colorette!" ) } . ` )

Using console.log 's string substitution can be useful too.

console . log ( bold ( "Total: $%f" ) , 1.99 )

You can also nest styles without breaking existing escape codes.

console . log ( red ( `Red Shirt ${ blue ( "Blue Shirt" ) } Red Shirt` ) )

Feeling adventurous? Try the pipeline operator.

console . log ( "Make it so!" | > bold | > blue )

Supported styles

Colorette supports the standard and bright color variations out-of-the-box. See this issue if you were looking for TrueColor support.

Colors Background Colors Bright Colors Bright Background Colors Modifiers black bgBlack blackBright bgBlackBright dim red bgRed redBright bgRedBright bold green bgGreen greenBright bgGreenBright hidden yellow bgYellow yellowBright bgYellowBright italic blue bgBlue blueBright bgBlueBright underline magenta bgMagenta magentaBright bgMagentaBright strikethrough cyan bgCyan cyanBright bgCyanBright reset white bgWhite whiteBright bgWhiteBright gray

API

style(string)

Returns a string wrapped in the corresponding ANSI escape codes.

red ( "Red Alert" ) //=> \u001b[31mRed Alert\u001b[39m

Color will be enabled if your terminal supports it, FORCE_COLOR is defined in process.env and if NO_COLOR isn't, but you can always override it if you want.

import { options } from "colorette" options . enabled = false

Run the benchmarks

npm i -C bench && node bench

colorette × 759,429 ops/sec chalk × 524,034 ops/sec kleur × 490,347 ops/sec colors × 255,661 ops/sec ansi-colors × 317,605 ops/sec

License

MIT