1# colors.js
2[![Build Status](https://travis-ci.org/Marak/colors.js.svg?branch=master)](https://travis-ci.org/Marak/colors.js)
3[![version](https://img.shields.io/npm/v/colors.svg)](https://www.npmjs.org/package/colors)
4[![dependencies](https://david-dm.org/Marak/colors.js.svg)](https://david-dm.org/Marak/colors.js)
5[![devDependencies](https://david-dm.org/Marak/colors.js/dev-status.svg)](https://david-dm.org/Marak/colors.js#info=devDependencies)
6
7Please check out the [roadmap](ROADMAP.md) for upcoming features and releases.  Please open Issues to provide feedback, and check the `develop` branch for the latest bleeding-edge updates.
8
9## get color and style in your node.js console
10
11![Demo](https://raw.githubusercontent.com/Marak/colors.js/master/screenshots/colors.png)
12
13## Installation
14
15    npm install colors
16
17## colors and styles!
18
19### text colors
20
21  - black
22  - red
23  - green
24  - yellow
25  - blue
26  - magenta
27  - cyan
28  - white
29  - gray
30  - grey
31
32### bright text colors
33
34  - brightRed
35  - brightGreen
36  - brightYellow
37  - brightBlue
38  - brightMagenta
39  - brightCyan
40  - brightWhite
41
42### background colors
43
44  - bgBlack
45  - bgRed
46  - bgGreen
47  - bgYellow
48  - bgBlue
49  - bgMagenta
50  - bgCyan
51  - bgWhite
52  - bgGray
53  - bgGrey
54
55### bright background colors
56
57  - bgBrightRed
58  - bgBrightGreen
59  - bgBrightYellow
60  - bgBrightBlue
61  - bgBrightMagenta
62  - bgBrightCyan
63  - bgBrightWhite
64
65### styles
66
67  - reset
68  - bold
69  - dim
70  - italic
71  - underline
72  - inverse
73  - hidden
74  - strikethrough
75
76### extras
77
78  - rainbow
79  - zebra
80  - america
81  - trap
82  - random
83
84
85## Usage
86
87By popular demand, `colors` now ships with two types of usages!
88
89The super nifty way
90
91```js
92var colors = require('colors');
93
94console.log('hello'.green); // outputs green text
95console.log('i like cake and pies'.underline.red) // outputs red underlined text
96console.log('inverse the color'.inverse); // inverses the color
97console.log('OMG Rainbows!'.rainbow); // rainbow
98console.log('Run the trap'.trap); // Drops the bass
99
100```
101
102or a slightly less nifty way which doesn't extend `String.prototype`
103
104```js
105var colors = require('colors/safe');
106
107console.log(colors.green('hello')); // outputs green text
108console.log(colors.red.underline('i like cake and pies')) // outputs red underlined text
109console.log(colors.inverse('inverse the color')); // inverses the color
110console.log(colors.rainbow('OMG Rainbows!')); // rainbow
111console.log(colors.trap('Run the trap')); // Drops the bass
112
113```
114
115I prefer the first way. Some people seem to be afraid of extending `String.prototype` and prefer the second way.
116
117If you are writing good code you will never have an issue with the first approach. If you really don't want to touch `String.prototype`, the second usage will not touch `String` native object.
118
119## Enabling/Disabling Colors
120
121The package will auto-detect whether your terminal can use colors and enable/disable accordingly. When colors are disabled, the color functions do nothing. You can override this with a command-line flag:
122
123```bash
124node myapp.js --no-color
125node myapp.js --color=false
126
127node myapp.js --color
128node myapp.js --color=true
129node myapp.js --color=always
130
131FORCE_COLOR=1 node myapp.js
132```
133
134Or in code:
135
136```javascript
137var colors = require('colors');
138colors.enable();
139colors.disable();
140```
141
142## Console.log [string substitution](http://nodejs.org/docs/latest/api/console.html#console_console_log_data)
143
144```js
145var name = 'Marak';
146console.log(colors.green('Hello %s'), name);
147// outputs -> 'Hello Marak'
148```
149
150## Custom themes
151
152### Using standard API
153
154```js
155
156var colors = require('colors');
157
158colors.setTheme({
159  silly: 'rainbow',
160  input: 'grey',
161  verbose: 'cyan',
162  prompt: 'grey',
163  info: 'green',
164  data: 'grey',
165  help: 'cyan',
166  warn: 'yellow',
167  debug: 'blue',
168  error: 'red'
169});
170
171// outputs red text
172console.log("this is an error".error);
173
174// outputs yellow text
175console.log("this is a warning".warn);
176```
177
178### Using string safe API
179
180```js
181var colors = require('colors/safe');
182
183// set single property
184var error = colors.red;
185error('this is red');
186
187// set theme
188colors.setTheme({
189  silly: 'rainbow',
190  input: 'grey',
191  verbose: 'cyan',
192  prompt: 'grey',
193  info: 'green',
194  data: 'grey',
195  help: 'cyan',
196  warn: 'yellow',
197  debug: 'blue',
198  error: 'red'
199});
200
201// outputs red text
202console.log(colors.error("this is an error"));
203
204// outputs yellow text
205console.log(colors.warn("this is a warning"));
206
207```
208
209### Combining Colors
210
211```javascript
212var colors = require('colors');
213
214colors.setTheme({
215  custom: ['red', 'underline']
216});
217
218console.log('test'.custom);
219```
220
221*Protip: There is a secret undocumented style in `colors`. If you find the style you can summon him.*
222