220 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
		
		
			
		
	
	
			220 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
| 
								 | 
							
								# @colors/colors ("colors.js")
							 | 
						||
| 
								 | 
							
								[](https://github.com/DABH/colors.js/actions/workflows/ci.yml)
							 | 
						||
| 
								 | 
							
								[](https://www.npmjs.org/package/@colors/colors)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Please check out the [roadmap](ROADMAP.md) for upcoming features and releases.  Please open Issues to provide feedback.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## get color and style in your node.js console
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Installation
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    npm install @colors/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/colors` now ships with two types of usages!
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The super nifty way
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```js
							 | 
						||
| 
								 | 
							
								var colors = require('@colors/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/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');
							 | 
						||
| 
								 | 
							
								colors.enable();
							 | 
						||
| 
								 | 
							
								colors.disable();
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Console.log [string substitution](http://nodejs.org/docs/latest/api/console.html#console_console_log_data)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```js
							 | 
						||
| 
								 | 
							
								var name = 'Beowulf';
							 | 
						||
| 
								 | 
							
								console.log(colors.green('Hello %s'), name);
							 | 
						||
| 
								 | 
							
								// outputs -> 'Hello Beowulf'
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Custom themes
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Using standard API
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```js
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var colors = require('@colors/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/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');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								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.*
							 |