Name Last Update
..
LICENSE.md Loading commit data...
README.md Loading commit data...
colorette.d.ts Loading commit data...
index.cjs Loading commit data...
index.js Loading commit data...
package.json Loading commit data...

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

options.enabled

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