supports-color
v11.0.0
Published
Detect whether a terminal supports color
Maintainers
Readme
supports-color
Detect whether a terminal supports color
Install
npm install supports-colorUsage
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 = 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 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. A numeric FORCE_COLOR overrides the detected color support and sets the level directly, meaning the terminal cannot raise it to a higher level. Use FORCE_COLOR=true to instead only enable color and let the level be detected.
Explicit 256/Truecolor mode can be enabled using the --color=256 and --color=16m flags, respectively. These take precedence over a non-zero numeric FORCE_COLOR.
Related
- supports-color-cli - CLI for this module
- supports-hyperlinks - Detect whether a terminal supports hyperlinks
- supports-terminal-graphics - Detect which terminal graphics protocols are supported
- chalk - Terminal string styling done right
- is-unicode-supported - Detect whether the terminal supports Unicode
- is-interactive - Check if stdout or stderr is interactive
