kleur
version travis downloads install size
The fastest Node.js library for formatting terminal text with ANSI colors~!
## Features * No dependencies * Super [lightweight](##load-time) & [performant](#performance) * Supports [nested](#nested-methods) & [chained](#chained-methods) colors * No `String.prototype` modifications * Conditional [color support](#conditional-support) * Familiar [API](#api) _Originally inspired by [`ansi-colors`](https://github.com/doowb/ansi-colors). See [Credits](#credits) for more info!_ ## Install ``` $ npm install --save kleur ``` ## Usage ```js const kleur = require('kleur'); // basic usage kleur.red('red text'); // chained methods kleur.blue.bold.underline('howdy partner'); // nested methods kleur.bold(`${ kleur.bgRed.white('[ERROR]') } ${ kleur.red.italic('Something happened')}`); ``` ### Chained Methods ```js console.log(kleur.bold.red('this is a bold red message')); console.log(kleur.bold.italic('this is a bold italicized message')); console.log(kleur.bold.yellow.bgRed.italic('this is a bold yellow italicized message')); console.log(kleur.green.bold.underline('this is a bold green underlined message')); ``` ### Nested Methods ```js const { yellow, red, cyan } = require('kleur'); console.log(yellow(`foo ${red.bold('red')} bar ${cyan('cyan')} baz`)); console.log(yellow('foo ' + red.bold('red') + ' bar ' + cyan('cyan') + ' baz')); ``` ### Conditional Support Toggle color support as needed; `kleur` assumes it's always enabled. ```js const kleur = require('kleur'); // manually disable kleur.enabled = false; // or use a library to detect support kleur.enabled = require('color-support').level; console.log(kleur.red('I will only be colored red if the terminal supports colors')); ``` ## API Any `kleur` method returns a `String` (when invoked, not chained). It's up to the developer to pass the output to destinations like `console.log`, `process.stdout.write`, etc. The methods below are grouped by type for legibility purposes only. They each can be [chained](#chained-methods) or [nested](#nested-methods) with one another. ***Colors:*** > black — red — green — yellow — blue — magenta — cyan — white — gray ***Backgrounds:*** > bgBlack — bgRed — bgGreen — bgYellow — bgBlue — bgMagenta — bgCyan — bgWhite ***Modifiers:*** > reset — bold — dim — italic* — underline — inverse — hidden — strikethrough* * Not widely supported ## Benchmarks > Using Node v8.9.0 ### Load time ``` chalk: 9.372ms turbocolor: 0.526ms ansi-colors: 0.851ms kleur: 0.862ms ``` ### Performance ``` # All Colors ansi-colors x 60,485 ops/sec ±0.63% (96 runs sampled) chalk x 7,184 ops/sec ±3.77% (68 runs sampled) turbocolor x 95,468 ops/sec ±0.60% (94 runs sampled)) kleur x 151,365 ops/sec ±0.22% (95 runs sampled) # Stacked colors ansi-colors x 13,754 ops/sec ±0.44% (93 runs sampled) chalk x 1,732 ops/sec ±3.76% (71 runs sampled) turbocolor x 28,709 ops/sec ±1.32% (92 runs sampled) kleur x 30,837 ops/sec ±0.13% (93 runs sampled) # Nested colors ansi-colors x 28,898 ops/sec ±0.32% (96 runs sampled) chalk x 3,389 ops/sec ±4.03% (71 runs sampled) turbocolor x 48,034 ops/sec ±1.47% (99 runs sampled) kleur x 61,266 ops/sec ±0.33% (97 runs sampled) ``` ## Credits This project was originally inspired by [Brian Woodward](https://github.com/doowb)'s awesome [`ansi-colors`](https://github.com/doowb/ansi-colors) project. Unlike v1, the latest version(s) of `kleur` no longer supports: * printf-formatting * variadic function arguments * multiline text via `\n` or `\r` * `kleur.clear()` method In addition, `kleur` continues to be ship without symbols and bright color variants. If you need _any_ of these features, please use `ansi-colors` instead~! ## License MIT © [Luke Edwards](https://lukeed.com)