Skip to content
Color your terminal using pure idiomatic JavaScript.
JavaScript TypeScript
Branch: master
Clone or download
Latest commit 6cbf660 Jul 8, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bench Bump 'em all Jun 24, 2019
test fix: nested styling bug in dim & bold; close #30 Oct 23, 2018
.gitignore chore: ignore example Oct 23, 2018
.travis.yml node 12 Jun 24, 2019
LICENSE.md Remove year, add URL. Feb 22, 2019
README.md Less meta Jul 8, 2019
colorette.d.ts refactor: beets are red, cucumbers are green, colorette Aug 23, 2018
index.js Support NO_COLOR env var Jun 24, 2019
package.json 1.1.0 Jun 28, 2019

README.md

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.

  • Up to ~10x faster than the 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

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

const { red, blue, bold } = require("colorette")

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

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

Or 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 even 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. For true color support see this issue.

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 code.

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

options.enabled

Colorette is enabled if your terminal supports color, FORCE_COLOR=1 or if NO_COLOR isn't in the environment, but you can always override it when you need to.

const { options } = require("colorette")

options.enabled = false

Run the benchmarks

npm i -C bench && node bench
# Using Styles
chalk × 14,468 ops/sec
colorette × 901,148 ops/sec

# Combining Styles
chalk × 44,067 ops/sec
colorette × 2,566,778 ops/sec

# Nesting Styles
chalk × 40,165 ops/sec
colorette × 506,494 ops/sec

License

MIT

You can’t perform that action at this time.