nanocolors

Use picocolors instead. It is 3 times smaller and 50% faster.

859
23
859
JavaScript
public
Archived

Deprecated

DEPRECATED: Use
picocolors instead.
It is 3 times smaller and 50% faster.

The space in node_modules including sub-dependencies:

- nanocolors   16 kB
+ picocolors    7 kB

Library loading time:

- nanocolors     0.885 ms
+ picocolors     0.470 ms

Benchmark for complex use cases:

- nanocolors     1,088,193 ops/sec
+ picocolors     1,772,265 ops/sec

Old docs

A tiny and fast Node.js library to ANSI colors to terminal output.

import { green, bold } from 'nanocolors'

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

Started as a fork
of @jorgebucaran’s
colorette with hacks
from @lukeed’s
kleur.
See changes
between Nano Colors and colorette.

Nano Colors output

Sponsored by Evil Martians

Replacing chalk

  1. Replace import and use named exports:

    - import chalk from 'chalk'
    + import { red, bold } from 'nanocolors'
    
  2. Unprefix calls:

    - chalk.red(text)
    + red(text)
    
  3. Replace chains to nested calls:

    - chalk.red.bold(text)
    + red(bold(text))
    
  4. If you used template tag, then use
    the nanocolors-template:

    - import chalk from 'chalk'
    + import { colorize } from 'nanocolors-template'
    
    - chalk.yellow.bold`yellow {red ${"text"}}`
    + colorize`{yellow.bold yellow {red ${"text"}}}`
    

Above changes can be applied automatically using
codemod:

npx jscodeshift FILES -t https://gist.githubusercontent.com/gavrix/ff051941ad9a19c8ea3224f38c30bc9a/raw/09d81e93f880ecbc8f52dcf7819816c81e2ba340/chalk_nanocolors_transform.js

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.

v0.3.3[beta]