supports-color
TypeScript icon, indicating that this package has built-in type declarations

9.4.0Public• Published

supports-color

Detect whether a terminal supports color

Install

$ npm install supports-color

Usage

importsupportsColorfrom'supports-color';

if(supportsColor.stdout){
console.log('Terminal stdout supports color');
}

if(supportsColor.stdout.has256){
console.log('Terminal stdout supports 256 colors');
}

if(supportsColor.stderr.has16m){
console.log('Terminal stderr supports 16 million colors (truecolor)');
}

API

Returns anobjectwith astdoutandstderrproperty for testing either streams. Each property is anObject,orfalseif color is not supported.

Thestdout/stderrobjects specifies a level of support for color through a.levelproperty and a corresponding flag:

  • .level = 1and.hasBasic = true:Basic color support (16 colors)
  • .level = 2and.has256 = true:256 color support
  • .level = 3and.has16m = true:Truecolor support (16 million colors)

Custom instance

The package also exposes the named exportcreateSupportColorfunction that takes an arbitrary write stream (for example,process.stdout) and an optional options object to (re-)evaluate color support for an arbitrary stream.

import{createSupportsColor}from'supports-color';

conststdoutSupportsColor=createSupportsColor(process.stdout);

if(stdoutSupportsColor){
console.log('Terminal stdout supports color');
}

// `stdoutSupportsColor` is the same as `supportsColor.stdout`

The options object supports a single boolean propertysniffFlags.By default it istrue,which instructs the detection to sniffprocess.argvfor the multitude of--colorflags (seeInfobelow). Iffalse,thenprocess.argvis not considered when determining color support.

Info

It obeys the--colorand--no-colorCLI flags.

For situations where using--coloris not possible, use the environment variableFORCE_COLOR=1(level 1),FORCE_COLOR=2(level 2), orFORCE_COLOR=3(level 3) to forcefully enable color, orFORCE_COLOR=0to forcefully disable. The use ofFORCE_COLORoverrides all other color support checks.

Explicit 256/Truecolor mode can be enabled using the--color=256and--color=16mflags, respectively.

Related

Maintainers


Get professional support for this package with a Tidelift subscription
Tidelift helps make open source sustainable for maintainers while giving companies
assurances about security, maintenance, and licensing for their dependencies.

Package Sidebar

Install

npm isupports-color

Weekly Downloads

307,703,913

Version

9.4.0

License

MIT

Unpacked Size

10.8 kB

Total Files

7

Last publish

Collaborators

  • sindresorhus
  • qix