JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 263677
  • Score
    100M100P100Q173540F
  • License MIT

A tiny and fast Node.js library for formatting terminal text with ANSI colors

Package Exports

  • nanocolors

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (nanocolors) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Nano Colors

A tiny and fast Node.js library for formatting terminal text with ANSI colors.

  • Fast. It is 70% faster than chalk.
  • Lightweight. It loads 2 times faster than chalk.
  • Actively maintained. Used in many big projects like PostCSS or Browserslist.
  • No dependencies. It takes 5 times less space in node_modules than chalk.
  • Auto-detects color support. You can also toggle color mode manually.
  • Tree-shakable. We use a dual ESM/CJS package.
import { green, bold } from 'nanocolors'

console.log(
  green(`Task ${bold('1')} was finished`)
)

Nano Colors output

Sponsored by Evil Martians

Benchmarks

Function calling time:

$ ./test/benchmark.js
chalk         8,142,778 ops/sec
ansi-colors   2,626,780 ops/sec
kleur        11,299,102 ops/sec
colorette    14,852,996 ops/sec
nanocolors   14,897,991 ops/sec

Library loading time:

$ ./test/loading.js
chalk        6.163 ms
ansi-colors  1.603 ms
kleur        1.771 ms
colorette    0.848 ms
nanocolors   0.571 ms

The space in node_modules including sub-dependencies:

$ ./test/size.js
chalk         192 KB
ansi-colors    40 KB
kleur          44 KB
colorette      32 KB
nanocolors     36 KB

Test configuration: ThinkPad X1 Carbon Gen 9, Fedora 34, Node.js 16.8.

API

Individual Colors

Nano Colors exports functions:

Colors Background Colors Modifiers
black bgBlack dim
red bgRed bold
green bgGreen hidden
yellow bgYellow italic
blue bgBlue underline
magenta bgMagenta strikethrough
cyan bgCyan reset
white bgWhite
gray

Functions are not chainable. You need to wrap it inside each other:

import { black, bgYellow } from 'nanocolors'

console.log(bgYellow(black(' WARN ')))

Functions will use colors only if Nano Colors auto-detect that current environment supports colors.

You can get support level in isColorSupported:

import { isColorSupported } from 'nanocolors'

if (isColorSupported) {
  console.log('With colors')
}

Conditional Support

You can manually switch colors on/off and override color support auto-detection:

import { createColors } from 'nanocolors'

const { red } = createColors(options.enableColors)

On undefined argument, createColors will use value from color support auto-detection.

Thanks

API design was inspired by colorette and kleur.