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

## <code><i>style</i>(string)</code>

Returns a string wrapped in the corresponding ANSI escape codes.

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

## <tt>options.enabled</tt>

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