|
|
# colors.js
[](https://travis-ci.org/Marak/colors.js) [](https://www.npmjs.org/package/colors) [](https://david-dm.org/Marak/colors.js) [](https://david-dm.org/Marak/colors.js#info=devDependencies)
Please 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.
## get color and style in your node.js console

## Installation
npm install colors
## colors and styles!
### text colors
- black - red - green - yellow - blue - magenta - cyan - white - gray - grey
### bright text colors
- brightRed - brightGreen - brightYellow - brightBlue - brightMagenta - brightCyan - brightWhite
### background colors
- bgBlack - bgRed - bgGreen - bgYellow - bgBlue - bgMagenta - bgCyan - bgWhite - bgGray - bgGrey
### bright background colors
- bgBrightRed - bgBrightGreen - bgBrightYellow - bgBrightBlue - bgBrightMagenta - bgBrightCyan - bgBrightWhite
### styles
- reset - bold - dim - italic - underline - inverse - hidden - strikethrough
### extras
- rainbow - zebra - america - trap - random
## Usage
By popular demand, `colors` now ships with two types of usages!
The super nifty way
```js var colors = require('colors');
console.log('hello'.green); // outputs green text console.log('i like cake and pies'.underline.red) // outputs red underlined text console.log('inverse the color'.inverse); // inverses the color console.log('OMG Rainbows!'.rainbow); // rainbow console.log('Run the trap'.trap); // Drops the bass
```
or a slightly less nifty way which doesn't extend `String.prototype`
```js var colors = require('colors/safe');
console.log(colors.green('hello')); // outputs green text console.log(colors.red.underline('i like cake and pies')) // outputs red underlined text console.log(colors.inverse('inverse the color')); // inverses the color console.log(colors.rainbow('OMG Rainbows!')); // rainbow console.log(colors.trap('Run the trap')); // Drops the bass
```
I prefer the first way. Some people seem to be afraid of extending `String.prototype` and prefer the second way.
If 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.
## Enabling/Disabling Colors
The 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:
```bash node myapp.js --no-color node myapp.js --color=false
node myapp.js --color node myapp.js --color=true node myapp.js --color=always
FORCE_COLOR=1 node myapp.js ```
Or in code:
```javascript var colors = require('colors'); colors.enable(); colors.disable(); ```
## Console.log [string substitution](http://nodejs.org/docs/latest/api/console.html#console_console_log_data)
```js var name = 'Marak'; console.log(colors.green('Hello %s'), name); // outputs -> 'Hello Marak' ```
## Custom themes
### Using standard API
```js
var colors = require('colors');
colors.setTheme({ silly: 'rainbow', input: 'grey', verbose: 'cyan', prompt: 'grey', info: 'green', data: 'grey', help: 'cyan', warn: 'yellow', debug: 'blue', error: 'red' });
// outputs red text console.log("this is an error".error);
// outputs yellow text console.log("this is a warning".warn); ```
### Using string safe API
```js var colors = require('colors/safe');
// set single property var error = colors.red; error('this is red');
// set theme colors.setTheme({ silly: 'rainbow', input: 'grey', verbose: 'cyan', prompt: 'grey', info: 'green', data: 'grey', help: 'cyan', warn: 'yellow', debug: 'blue', error: 'red' });
// outputs red text console.log(colors.error("this is an error"));
// outputs yellow text console.log(colors.warn("this is a warning"));
```
### Combining Colors
```javascript var colors = require('colors');
colors.setTheme({ custom: ['red', 'underline'] });
console.log('test'.custom); ```
*Protip: There is a secret undocumented style in `colors`. If you find the style you can summon him.*
|