aaed2bad800871a9bdeb09e17584cef911fa73f4.svn-base
4.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# color-support
A module which will endeavor to guess your terminal's level of color
support.
[![Build Status](https://travis-ci.org/isaacs/color-support.svg?branch=master)](https://travis-ci.org/isaacs/color-support) [![Coverage Status](https://coveralls.io/repos/github/isaacs/color-support/badge.svg?branch=master)](https://coveralls.io/github/isaacs/color-support?branch=master)
This is similar to `supports-color`, but it does not read
`process.argv`.
1. If not in a node environment, not supported.
2. If stdout is not a TTY, not supported, unless the `ignoreTTY`
option is set.
3. If the `TERM` environ is `dumb`, not supported, unless the
`ignoreDumb` option is set.
4. If on Windows, then support 16 colors.
5. If using Tmux, then support 256 colors.
7. Handle continuous-integration servers. If `CI` or
`TEAMCITY_VERSION` are set in the environment, and `TRAVIS` is not
set, then color is not supported, unless `ignoreCI` option is set.
6. Guess based on the `TERM_PROGRAM` environ. These terminals support
16m colors:
- `iTerm.app` version 3.x supports 16m colors, below support 256
- `MacTerm` supports 16m colors
- `Apple_Terminal` supports 256 colors
- Have more things that belong on this list? Send a PR!
8. Make a guess based on the `TERM` environment variable. Any
`xterm-256color` will get 256 colors. Any screen, xterm, vt100,
color, ansi, cygwin, or linux `TERM` will get 16 colors.
9. If `COLORTERM` environment variable is set, then support 16 colors.
10. At this point, we assume that color is not supported.
## USAGE
```javascript
var testColorSupport = require('color-support')
var colorSupport = testColorSupport(/* options object */)
if (!colorSupport) {
console.log('color is not supported')
} else if (colorSupport.has16m) {
console.log('\x1b[38;2;102;194;255m16m colors\x1b[0m')
} else if (colorSupport.has256) {
console.log('\x1b[38;5;119m256 colors\x1b[0m')
} else if (colorSupport.hasBasic) {
console.log('\x1b[31mbasic colors\x1b[0m')
} else {
console.log('this is impossible, but colors are not supported')
}
```
If you don't have any options to set, you can also just look at the
flags which will all be set on the test function itself. (Of course,
this doesn't return a falsey value when colors aren't supported, and
doesn't allow you to set options.)
```javascript
var colorSupport = require('color-support')
if (colorSupport.has16m) {
console.log('\x1b[38;2;102;194;255m16m colors\x1b[0m')
} else if (colorSupport.has256) {
console.log('\x1b[38;5;119m256 colors\x1b[0m')
} else if (colorSupport.hasBasic) {
console.log('\x1b[31mbasic colors\x1b[0m')
} else {
console.log('colors are not supported')
}
```
## Options
You can pass in the following options.
* ignoreTTY - default false. Ignore the `isTTY` check.
* ignoreDumb - default false. Ignore `TERM=dumb` environ check.
* ignoreCI - default false. Ignore `CI` environ check.
* env - Object for environment vars. Defaults to `process.env`.
* stream - Stream for `isTTY` check. Defaults to `process.stdout`.
* term - String for `TERM` checking. Defaults to `env.TERM`.
* alwaysReturn - default false. Return an object when colors aren't
supported (instead of returning `false`).
* level - A number from 0 to 3. This will return a result for the
specified level. This is useful if you want to be able to set the
color support level explicitly as a number in an environment
variable or config, but then use the object flags in your program.
Except for `alwaysReturn` to return an object for level 0, all other
options are ignored, since no checking is done if a level is
explicitly set.
## Return Value
If no color support is available, then `false` is returned by default,
unless the `alwaysReturn` flag is set to `true`. This is so that the
simple question of "can I use colors or not" can treat any truthy
return as "yes".
Otherwise, the return object has the following fields:
* `level` - A number from 0 to 3
* `0` - No color support
* `1` - Basic (16) color support
* `2` - 256 color support
* `3` - 16 million (true) color support
* `hasBasic` - Boolean
* `has256` - Boolean
* `has16m` - Boolean
## CLI
You can run the `color-support` bin from the command line which will
just dump the values as this module calculates them in whatever env
it's run. It takes no command line arguments.
## Credits
This is a spiritual, if not actual, fork of
[supports-color](http://npm.im/supports-color) by the ever prolific
[Sindre Sorhus](http://npm.im/~sindresorhus).