2015-02-23 14:38:38 +07:00
< h1 align = "center" >
2015-06-30 19:57:59 +02:00
< br >
2015-02-23 14:38:38 +07:00
< br >
2017-06-20 22:08:24 +02:00
< img width = "320" src = "https://cdn.rawgit.com/chalk/chalk/19935d6484811c5e468817f846b7b3d417d7bf4a/logo.svg" alt = "chalk" >
2015-02-23 14:38:38 +07:00
< br >
< br >
2015-06-30 19:57:59 +02:00
< br >
2015-02-23 14:38:38 +07:00
< / h1 >
2013-08-03 02:16:26 +02:00
2013-12-13 20:21:51 +01:00
> Terminal string styling done right
2013-08-03 02:16:26 +02:00
2016-10-26 20:13:45 +07:00
[ ! [ Build Status ] ( https : //travis-ci.org/chalk/chalk.svg?branch=master)](https://travis-ci.org/chalk/chalk) [](https://coveralls.io/github/chalk/chalk?branch=master) [](https://www.youtube.com/watch?v=9auOCbH5Ns4) [](https://github.com/sindresorhus/xo)
2013-11-10 13:25:35 +01:00
2017-06-30 12:53:46 +02:00
# # # [ See what ' s new in Chalk 2 ] ( https : //github.com/chalk/chalk/releases/tag/v2.0.0)
2013-08-03 02:16:26 +02:00
2015-06-30 19:55:37 +02:00
! [ ] ( https : //github.com/chalk/ansi-styles/raw/master/screenshot.png)
2013-08-03 02:16:26 +02:00
2017-06-20 22:08:24 +02:00
# # Highlights
2013-08-03 02:16:26 +02:00
- Expressive API
2017-06-20 22:08:24 +02:00
- Highly performant
2014-06-24 17:23:43 +02:00
- Ability to nest styles
2017-06-20 22:08:24 +02:00
- [ 256 / Truecolor color support ] ( # 256 - and - truecolor - color - support )
2013-08-03 02:16:26 +02:00
- Auto - detects color support
2017-06-20 22:08:24 +02:00
- Doesn ' t extend ` String.prototype `
- Clean and focused
2013-08-03 02:16:26 +02:00
- Actively maintained
2021-05-26 15:38:45 -03:00
- [ Used by ~ 18 , 000 packages ] ( https : //www.npmjs.com/browse/depended/chalk) as of June 20th, 2017
2013-08-03 02:16:26 +02:00
# # Install
2016-07-27 11:43:15 +05:30
` ` ` console
2017-06-20 22:08:24 +02:00
$ npm install chalk
2014-02-11 20:33:11 +01:00
` ` `
2013-08-03 02:16:26 +02:00
2014-04-03 22:57:06 +02:00
# # Usage
2013-08-03 02:16:26 +02:00
2015-11-05 13:12:34 +07:00
` ` ` js
const chalk = require ( 'chalk' ) ;
console . log ( chalk . blue ( 'Hello world!' ) ) ;
` ` `
2014-08-31 00:51:39 +02:00
Chalk comes with an easy to use composable API where you just chain and nest the styles you want .
2013-08-03 02:16:26 +02:00
` ` ` js
2015-10-05 22:36:26 +07:00
const chalk = require ( 'chalk' ) ;
2016-09-08 03:12:05 -07:00
const log = console . log ;
2013-08-03 02:16:26 +02:00
2017-06-20 22:08:24 +02:00
// Combine styled and normal strings
2016-09-08 03:12:05 -07:00
log ( chalk . blue ( 'Hello' ) + 'World' + chalk . red ( '!' ) ) ;
2013-08-03 02:16:26 +02:00
2017-06-20 22:08:24 +02:00
// Compose multiple styles using the chainable API
2016-09-08 03:12:05 -07:00
log ( chalk . blue . bgRed . bold ( 'Hello world!' ) ) ;
2013-08-03 18:47:47 +02:00
2017-06-20 22:08:24 +02:00
// Pass in multiple arguments
2016-09-08 03:12:05 -07:00
log ( chalk . blue ( 'Hello' , 'World!' , 'Foo' , 'bar' , 'biz' , 'baz' ) ) ;
2014-06-24 17:23:43 +02:00
2017-06-20 22:08:24 +02:00
// Nest styles
2016-09-08 03:12:05 -07:00
log ( chalk . red ( 'Hello' , chalk . underline . bgBlue ( 'world' ) + '!' ) ) ;
2013-10-07 00:34:32 -04:00
2017-06-20 22:08:24 +02:00
// Nest styles of the same type even (color, underline, background)
2016-09-08 03:12:05 -07:00
log ( chalk . green (
2014-08-30 23:13:42 +02:00
'I am a green line ' +
chalk . blue . underline . bold ( 'with a blue substring' ) +
' that becomes green again!'
2016-09-08 03:12:05 -07:00
) ) ;
2015-10-09 01:09:08 +07:00
// ES2015 template literal
2016-09-08 03:12:05 -07:00
log ( `
2015-10-09 01:09:08 +07:00
CPU : $ { chalk . red ( '90%' ) }
RAM : $ { chalk . green ( '40%' ) }
DISK : $ { chalk . yellow ( '70%' ) }
2016-09-08 03:12:05 -07:00
` );
2017-06-20 10:02:09 -07:00
2017-06-29 16:46:19 -07:00
// ES2015 tagged template literal
log ( chalk `
CPU : { red $ { cpu . totalPercent } % }
RAM : { green $ { ram . used / ram . total * 100 } % }
DISK : { rgb ( 255 , 131 , 0 ) $ { disk . used / disk . total * 100 } % }
` );
2017-06-20 10:02:09 -07:00
// Use RGB colors in terminal emulators that support it.
log ( chalk . keyword ( 'orange' ) ( 'Yay for orange colored text!' ) ) ;
log ( chalk . rgb ( 123 , 45 , 67 ) . underline ( 'Underlined reddish color' ) ) ;
log ( chalk . hex ( '#DEADED' ) . bold ( 'Bold gray!' ) ) ;
2013-08-03 02:16:26 +02:00
` ` `
2017-06-20 22:08:24 +02:00
Easily define your own themes :
2013-08-03 02:16:26 +02:00
` ` ` js
2015-10-05 22:36:26 +07:00
const chalk = require ( 'chalk' ) ;
2017-06-20 10:02:09 -07:00
2015-10-05 22:36:26 +07:00
const error = chalk . bold . red ;
2017-06-20 10:02:09 -07:00
const warning = chalk . keyword ( 'orange' ) ;
2013-08-03 02:16:26 +02:00
console . log ( error ( 'Error!' ) ) ;
2017-06-20 10:02:09 -07:00
console . log ( warning ( 'Warning!' ) ) ;
2013-08-03 02:16:26 +02:00
` ` `
2017-06-20 22:08:24 +02:00
Take advantage of console . log [ string substitution ] ( https : //nodejs.org/docs/latest/api/console.html#console_console_log_data_args):
2013-12-16 21:44:25 +01:00
` ` ` js
2015-10-05 22:36:26 +07:00
const name = 'Sindre' ;
2013-12-16 21:44:25 +01:00
console . log ( chalk . green ( 'Hello %s' ) , name ) ;
2015-10-05 22:36:26 +07:00
//=> 'Hello Sindre'
2013-12-16 21:44:25 +01:00
` ` `
2013-08-03 02:16:26 +02:00
# # API
2013-10-19 18:04:30 +02:00
# # # chalk . ` <style>[.<style>...](string, [string...]) `
2013-08-03 02:16:26 +02:00
2013-12-13 20:21:51 +01:00
Example : ` chalk.red.bold.underline('Hello', 'world'); `
2013-08-03 02:16:26 +02:00
2017-06-20 22:08:24 +02:00
Chain [ styles ] ( # styles ) and call the last one as a method with a string argument . Order doesn ' t matter , and later styles take precedent in case of a conflict . This simply means that ` chalk.red.yellow.green ` is equivalent to ` chalk.green ` .
2013-12-13 20:21:51 +01:00
Multiple arguments will be separated by space .
2013-08-03 02:16:26 +02:00
2017-06-29 13:34:00 -07:00
# # # chalk . enabled
Color support is automatically detected , as is the level ( see ` chalk.level ` ) . However , if you ' d like to simply enable / disable Chalk , you can do so via the ` .enabled ` property .
Chalk is enabled by default unless expicitly disabled via the constructor or ` chalk.level ` is ` 0 ` .
If you need to change this in a reusable module , create a new instance :
` ` ` js
const ctx = new chalk . constructor ( { enabled : false } ) ;
` ` `
2017-06-20 10:02:09 -07:00
# # # chalk . level
2013-08-03 02:16:26 +02:00
2017-06-20 22:08:24 +02:00
Color support is automatically detected , but you can override it by setting the ` level ` property . You should however only do this in your own code as it applies globally to all Chalk consumers .
2015-02-17 15:57:40 +07:00
2017-06-29 13:34:00 -07:00
If you need to change this in a reusable module , create a new instance :
2015-02-17 15:57:40 +07:00
` ` ` js
2017-06-20 10:02:09 -07:00
const ctx = new chalk . constructor ( { level : 0 } ) ;
2015-02-17 15:57:40 +07:00
` ` `
2013-08-03 02:16:26 +02:00
2017-06-20 10:02:09 -07:00
Levels are as follows :
0 . All colors disabled
1 . Basic color support ( 16 colors )
2 . 256 color support
2017-06-20 22:08:24 +02:00
3 . Truecolor support ( 16 million colors )
2017-06-20 10:02:09 -07:00
2013-08-03 02:16:26 +02:00
# # # chalk . supportsColor
2015-06-30 19:55:37 +02:00
Detect whether the terminal [ supports color ] ( https : //github.com/chalk/supports-color). Used internally and handled for you, but exposed for convenience.
2013-08-03 02:16:26 +02:00
2017-06-20 22:08:24 +02:00
Can be overridden by the user with the flags ` --color ` and ` --no-color ` . For situations where using ` --color ` is not possible , add the environment variable ` FORCE_COLOR=1 ` to forcefully enable color or ` FORCE_COLOR=0 ` to forcefully disable . The use of ` FORCE_COLOR ` overrides all other color support checks .
Explicit 256 / Truecolor mode can be enabled using the ` --color=256 ` and ` --color=16m ` flags , respectively .
2013-08-03 02:16:26 +02:00
# # Styles
2014-11-23 18:56:00 +07:00
# # # Modifiers
2013-08-03 02:16:26 +02:00
2014-06-04 01:38:03 +02:00
- ` reset `
- ` bold `
- ` dim `
2017-06-20 22:08:24 +02:00
- ` italic ` * ( Not widely supported ) *
2014-06-04 01:38:03 +02:00
- ` underline `
- ` inverse `
- ` hidden `
2017-06-20 22:08:24 +02:00
- ` strikethrough ` * ( Not widely supported ) *
2013-08-03 02:16:26 +02:00
2014-11-23 18:56:00 +07:00
# # # Colors
2013-08-03 02:16:26 +02:00
2014-06-04 01:38:03 +02:00
- ` black `
- ` red `
- ` green `
- ` yellow `
2017-06-20 22:08:24 +02:00
- ` blue ` * ( On Windows the bright version is used since normal blue is illegible ) *
2014-06-04 01:38:03 +02:00
- ` magenta `
- ` cyan `
- ` white `
2017-07-07 16:03:36 -07:00
- ` gray ` ( "bright black" )
2017-06-20 22:08:24 +02:00
- ` redBright `
- ` greenBright `
- ` yellowBright `
- ` blueBright `
- ` magentaBright `
- ` cyanBright `
- ` whiteBright `
2013-08-03 02:16:26 +02:00
# # # Background colors
2014-06-04 01:38:03 +02:00
- ` bgBlack `
- ` bgRed `
- ` bgGreen `
- ` bgYellow `
- ` bgBlue `
- ` bgMagenta `
- ` bgCyan `
- ` bgWhite `
2017-06-20 22:08:24 +02:00
- ` bgBlackBright `
- ` bgRedBright `
- ` bgGreenBright `
- ` bgYellowBright `
- ` bgBlueBright `
- ` bgMagentaBright `
- ` bgCyanBright `
- ` bgWhiteBright `
2013-08-03 02:16:26 +02:00
2014-11-23 18:56:00 +07:00
2017-06-29 16:46:19 -07:00
# # Tagged template literal
Chalk can be used as a [ tagged template literal ] ( http : //exploringjs.com/es6/ch_template-literals.html#_tagged-template-literals).
` ` ` js
const chalk = require ( 'chalk' ) ;
const miles = 18 ;
const calculateFeet = miles = > miles * 5280 ;
console . log ( chalk `
There are { bold 5280 feet } in a mile .
In { bold $ { miles } miles } , there are { green . bold $ { calculateFeet ( miles ) } feet } .
` );
` ` `
Blocks are delimited by an opening curly brace ( ` { ` ) , a style , some content , and a closing curly brace ( ` } ` ) .
Template styles are chained exactly like normal Chalk styles . The following two statements are equivalent :
` ` ` js
console . log ( chalk . bold . rgb ( 10 , 100 , 200 ) ( 'Hello!' ) ) ;
console . log ( chalk ` {bold.rgb(10,100,200) Hello!} ` ) ;
` ` `
Note that function styles ( ` rgb() ` , ` hsl() ` , ` keyword() ` , etc . ) may not contain spaces between parameters .
All interpolated values ( ` ` chalk ` ${ foo } ` ` ` ) are converted to strings via the ` .toString() ` method . All curly braces ( ` { ` and ` } ` ) in interpolated value strings are escaped .
2017-06-20 22:08:24 +02:00
# # 256 and Truecolor color support
2017-06-20 10:02:09 -07:00
2017-06-20 22:08:24 +02:00
Chalk supports 256 colors and [ Truecolor ] ( https : //gist.github.com/XVilka/8346728) (16 million colors) on supported terminal apps.
2017-06-20 10:02:09 -07:00
2017-06-20 22:08:24 +02:00
Colors are downsampled from 16 million RGB values to an ANSI color format that is supported by the terminal emulator ( or by specifying ` {level: n} ` as a Chalk option ) . For example , Chalk configured to run at level 1 ( basic color support ) will downsample an RGB value of # FF0000 ( red ) to 31 ( ANSI escape for red ) .
2017-06-20 10:02:09 -07:00
2017-06-20 22:08:24 +02:00
Examples :
2017-06-20 10:02:09 -07:00
- ` chalk.hex('#DEADED').underline('Hello, world!') `
- ` chalk.keyword('orange')('Some orange text') `
- ` chalk.rgb(15, 100, 204).inverse('Hello!') `
Background versions of these models are prefixed with ` bg ` and the first level of the module capitalized ( e . g . ` keyword ` for foreground colors and ` bgKeyword ` for background colors ) .
- ` chalk.bgHex('#DEADED').underline('Hello, world!') `
- ` chalk.bgKeyword('orange')('Some orange text') `
- ` chalk.bgRgb(15, 100, 204).inverse('Hello!') `
2017-06-20 22:08:24 +02:00
The following color models can be used :
- [ ` rgb ` ] ( https : //en.wikipedia.org/wiki/RGB_color_model) - Example: `chalk.rgb(255, 136, 0).bold('Orange!')`
- [ ` hex ` ] ( https : //en.wikipedia.org/wiki/Web_colors#Hex_triplet) - Example: `chalk.hex('#FF8800').bold('Orange!')`
- [ ` keyword ` ] ( https : //www.w3.org/wiki/CSS/Properties/color/keywords) (CSS keywords) - Example: `chalk.keyword('orange').bold('Orange!')`
- [ ` hsl ` ] ( https : //en.wikipedia.org/wiki/HSL_and_HSV) - Example: `chalk.hsl(32, 100, 50).bold('Orange!')`
- [ ` hsv ` ] ( https : //en.wikipedia.org/wiki/HSL_and_HSV) - Example: `chalk.hsl(32, 1, 1).bold('Orange!')`
- [ ` hwb ` ] ( https : //en.wikipedia.org/wiki/HWB_color_model) - Example: `chalk.hsl(32, 0, 50).bold('Orange!')`
2017-06-20 10:02:09 -07:00
- ` ansi16 `
- ` ansi256 `
2014-11-23 18:56:00 +07:00
2017-06-20 19:18:21 +02:00
2014-12-05 17:31:57 +07:00
# # Windows
2015-09-13 22:19:40 +02:00
If you ' re on Windows , do yourself a favor and use [ ` cmder ` ] ( http : //cmder.net/) instead of `cmd.exe`.
2014-12-05 17:31:57 +07:00
2017-06-30 12:53:46 +02:00
# # Origin story
[ colors . js ] ( https : //github.com/Marak/colors.js) used to be the most popular string styling module, but it has serious deficiencies like extending `String.prototype` which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68) and the package is unmaintained. Although there are other packages, they either do too much or not enough. Chalk is a clean and focused alternative.
2015-06-30 21:22:46 +02:00
# # Related
2015-07-01 03:01:07 +02:00
- [ chalk - cli ] ( https : //github.com/chalk/chalk-cli) - CLI for this module
2016-04-06 23:05:21 +07:00
- [ ansi - styles ] ( https : //github.com/chalk/ansi-styles) - ANSI escape codes for styling strings in the terminal
- [ supports - color ] ( https : //github.com/chalk/supports-color) - Detect whether a terminal supports color
2015-06-30 21:22:46 +02:00
- [ strip - ansi ] ( https : //github.com/chalk/strip-ansi) - Strip ANSI escape codes
- [ has - ansi ] ( https : //github.com/chalk/has-ansi) - Check if a string has ANSI escape codes
- [ ansi - regex ] ( https : //github.com/chalk/ansi-regex) - Regular expression for matching ANSI escape codes
2015-08-20 03:02:09 +07:00
- [ wrap - ansi ] ( https : //github.com/chalk/wrap-ansi) - Wordwrap a string with ANSI escape codes
2015-09-26 15:15:59 +07:00
- [ slice - ansi ] ( https : //github.com/chalk/slice-ansi) - Slice a string with ANSI escape codes
2017-06-20 10:02:09 -07:00
- [ color - convert ] ( https : //github.com/qix-/color-convert) - Converts colors between different models
2015-06-30 21:22:46 +02:00
2017-06-20 19:18:21 +02:00
# # Maintainers
- [ Sindre Sorhus ] ( https : //github.com/sindresorhus)
- [ Josh Junon ] ( https : //github.com/qix-)
2013-08-03 02:16:26 +02:00
# # License
2017-06-20 19:18:21 +02:00
MIT
2021-05-26 15:38:45 -03:00
# # Sponsors
- [ Paypal ] ( https : //www.paypal.com/donate?business=RBHMVN4AQGQE2&item_name=Donation¤cy_code=BRL)
- Dogecoin Wallet ( github . com / l198881 / chalk ) :
" D7RMk96j7BLzTcy1hVqF5fAtpA4khmsyvA "