Socket
Socket
Sign inDemoInstall

supports-color

Package Overview
Dependencies
0
Maintainers
2
Versions
50
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

supports-color

Detect whether a terminal supports color


Version published
Maintainers
2
Weekly downloads
313,772,766
decreased by-1.15%
Bundle size
1.1 kB
Minified + gzipped

Weekly downloads

Package description

What is supports-color?

The supports-color npm package is used to detect whether a terminal supports color and, if so, which kinds of color. It can be used to tailor output to the terminal's capabilities, avoiding the use of color when it's not supported and enabling it when possible. This can help improve the readability and aesthetics of command-line tool output.

What are supports-color's main functionalities?

Detecting Color Support

This feature allows you to check if the terminal supports color, and if so, what level of color support it has (basic colors, 256 colors, or 16 million colors).

const supportsColor = require('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)');
}

Forcing Color Support

This feature allows you to force color support in the terminal. This can be useful for testing or when running in environments where color support is not detected correctly.

const supportsColor = require('supports-color');
process.env.FORCE_COLOR = '1';
supportsColor.stdout.level = 1;
console.log('Forced color support level to basic colors');

Other packages similar to supports-color

Readme

Source

supports-color

Detect whether a terminal supports color

Install

$ npm install supports-color

Usage

import supportsColor from '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 an object with a stdout and stderr property for testing either streams. Each property is an Object, or false if color is not supported.

The stdout/stderr objects specifies a level of support for color through a .level property and a corresponding flag:

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

Custom instance

The package also exposes the named export createSupportColor function 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';

const stdoutSupportsColor = 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 property sniffFlags. By default it is true, which instructs the detection to sniff process.argv for the multitude of --color flags (see Info below). If false, then process.argv is not considered when determining color support.

Info

It obeys the --color and --no-color CLI flags.

For situations where using --color is not possible, use the environment variable FORCE_COLOR=1 (level 1), FORCE_COLOR=2 (level 2), or FORCE_COLOR=3 (level 3) to forcefully enable color, or FORCE_COLOR=0 to forcefully disable. The use of FORCE_COLOR overrides all other color support checks.

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

  • supports-color-cli - CLI for this module
  • chalk - Terminal string styling done right
  • is-unicode-supported - Detect whether the terminal supports Unicode
  • is-interactive - Check if stdout or stderr is interactive

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.

Keywords

FAQs

Last updated on 15 Dec 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc