chalk 中文文档(译)

chalk

控制台字符样式。

查看 chalk 2的新功能

chalk

亮点

  • 清晰可读的API
  • 高性能
  • 支持样式嵌套
  • 256 /真彩颜色支持
  • 自动检测颜色支持
  • 不扩展 String.prototype
  • clean 和 focus
  • 积极维护
  • 截止到2017年6月20日,被 1700多个包引用

安装

npm install chalk  

使用

const chalk = require('chalk');  
console.log(chalk.blue('Hello world!'));  

chalk 配备了一个易于使用的组合的API,你只需要将你想要的样式串联起来。

const chalk = require('chalk');  
const log = console.log;

// Combine styled and normal strings
log(chalk.blue('Hello') + 'World' + chalk.red('!'));

// Compose multiple styles using the chainable API
log(chalk.blue.bgRed.bold('Hello world!'));

// Pass in multiple arguments
log(chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz'));

// Nest styles
log(chalk.red('Hello', chalk.underline.bgBlue('world') + '!'));

// Nest styles of the same type even (color, underline, background)
log(chalk.green(  
    'I am a green line ' +
    chalk.blue.underline.bold('with a blue substring') +
    ' that becomes green again!'
));

// ES2015 template literal
log(`  
CPU: ${chalk.red('90%')}  
RAM: ${chalk.green('40%')}  
DISK: ${chalk.yellow('70%')}  
`);

// 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}%}  
`);

// 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!'));  

可以很方便地自定义主题:

const chalk = require('chalk');

const error = chalk.bold.red;  
const warning = chalk.keyword('orange');

console.log(error('Error!'));  
console.log(warning('Warning!'));  

利用console.log 的字符替换

const name = 'Sindre';  
console.log(chalk.green('Hello %s'), name);  
//=> 'Hello Sindre'

API

chalk.<style>[.<style>...](string,[string...])

例如,chalk.red.bold.underline('Hello', 'world');

将样式串联起来,并将最后一们样式作为方法,传入字符串参数来调用。顺序无关紧要,如果样式冲突,写在后面的优先。这意味着,chalk.red.yellow.green等价于chalk.green

多个参数会被空格分开。

chalk.enabled

颜色支持是自动检测的,与chalk.level一样。然而,如果你想简单地启用或者禁用,你可以使用.enabled属性修改。

chalk默认是启动的,除非用构造函数或chalk.level为0来禁用。
如果需要在可重用模块中更改此值,请创建一个新实例:

const ctx = new chalk.constructor({enabled: false});  

chalk.level

支持自动检测颜色,但可以通过设置级别属性来覆盖它。然而,您应该只在您自己的代码中这样做,因为直接修改会对所有chalk消费者起作用。 如果需要在可重用模块中更改此值,请创建一个新实例:

const ctx = new chalk.constructor({level: 0});  

有以下这些级别: * 0.禁用所有颜色。 * 1.基础的颜色支持(16色) * 2.256色支持 * 3. 真彩色支持(1千6百万色)

chalk.supportsColor

检测终端是否支持彩色,内部使用,而且为你处理好了,仅仅为了方便而暴露。 可以由用户使用 --color 和 --no-color 标记覆盖。对于使用--color 这种情况,基本上是不可能的,使用FORCE_COLOR=1添加环境变量强制使用颜色,或者使用FORCE_COLOR=0强制禁用颜色。使用的force_color凌驾于所有其他颜色支持检查。

明确的256/真彩色 模式可以分别使用 --color=256或者--color=16m标记。

样式

修改器

  • reset
  • bold
  • dim
  • italic(未广泛支持)
  • underline
  • inverse
  • hidden
  • strikethrough(未广泛支持)
  • visible(只有启用时才发出文本)

颜色

  • black
  • red
  • green
  • yellow
  • blue (在window上会使用亮一点的蓝,因为正常的蓝色看不清)
  • magenta
  • cyan
  • white
  • gray ("bright black")
  • redBright
  • greenBright
  • yellowBright
  • blueBright
  • magentaBright
  • cyanBright
  • whiteBright

背景色

  • bgBlack
  • bgRed
  • bgGreen
  • bgYellow
  • bgBlue
  • bgMagenta
  • bgCyan
  • bgWhite
  • bgBlackBright
  • bgRedBright
  • bgGreenBright
  • bgYellowBright
  • bgBlueBright
  • bgMagentaBright
  • bgCyanBright
  • bgWhiteBright

标签模板文字

chalk 可以用作为标签模板文字。

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}.
`);

块由一个开始花括号({),一个样式,一些内容,和一个结束花括号构成。 模板风格也可以用链式写法,像普通的chalk风格一样。下面这两个写法是一样的:

console.log(chalk.bold.rgb(10, 100, 200)('Hello!'));  
console.log(chalk`{bold.rgb(10,100,200) Hello!}`);  

注意样式函数(rgb(),hsl(),keyword()等)可能不包含参数之间的空格。 所有插值(chalk`${foo}`)会被.toString()转成字符串,所有的花括号({})则不会。

256位和真彩色支持

在支持 256 或真彩色的 终端程序上,chalk也支持256位高保真和真彩色。 颜色会从1600万色降低采样到终端仿真器支持的ANSI彩色格式(或者指定{level:n})。例如,chalk配置指定级别为1(基础的色彩支持)会将RGB真彩色降低采样到ANSI色。 例如:

  • chalk.hex('#DEADED').underline('Hello, world!')
  • chalk.keyword('orange')('Some orange text')
  • chalk.rgb(15, 100, 204).inverse('Hello!')

这些模式的背景色都是加一个前缀bg,而且原首字母大写(例如,keyWord 用于前景色,而bgKeyword用于背景色)。

  • chalk.bgHex('#DEADED').underline('Hello, world!')
  • chalk.bgKeyword('orange')('Some orange text')
  • chalk.bgRgb(15, 100, 204).inverse('Hello!')

可以使用以下颜色模型:

  • rgb - 例如: chalk.rgb(255, 136, 0).bold('Orange!')
  • hex - 例如: chalk.hex('#FF8800').bold('Orange!')
  • keyword (CSS 关键字) - 例如chalk.keyword('orange').bold('Orange!')
  • hsl - 例如: chalk.hsl(32, 100, 50).bold('Orange!')
  • hsv - 例如: chalk.hsv(32, 100, 100).bold('Orange!')
  • hwb - 例如: chalk.hwb(32, 0, 50).bold('Orange!')
  • ansi16
  • ansi256

Windows

如果你在Windows上,帮自己一个忙,用cmder代替cmd.exe

故事的起源

colors.js 曾经是最流行的字符串样式模块。但它有严重的缺陷,比如扩展 String.prototype会导致各种问题,而且包也不在了。虽然还有其它类似的包,但他们做得都不够,chalk是干净而且专业的替代品。

  • chalk-cli - CLI for this module
  • ansi-styles - ANSI escape codes for styling strings in the terminal
  • supports-color - Detect whether a terminal supports color
  • strip-ansi - Strip ANSI escape codes
  • strip-ansi-stream - Strip ANSI escape codes from a stream
  • has-ansi - Check if a string has ANSI escape codes
  • ansi-regex - Regular expression for matching ANSI escape codes
  • wrap-ansi - Wordwrap a string with ANSI escape codes
  • slice-ansi - Slice a string with ANSI escape codes
  • color-convert - Converts colors between different models
  • chalk-animation - Animate strings in the terminal
  • gradient-string - Apply color gradients to strings
  • chalk-pipe - Create chalk style schemes with simpler style strings

Maintainers

  • Sindre Sorhus
  • Josh Junon

License

MIT

licat

继续阅读此作者的更多文章