chalk/readme_zh.md
2021-07-23 10:38:54 +08:00

12 KiB
Raw Blame History



Chalk


终端字符串的正确样式

Coverage Status npm dependents Downloads run on repl.it Support Chalk on DEV



English | 中文文档




重点介绍

安装

$ npm install chalk

使用方法

import chalk from "chalk";

console.log(chalk.blue("Hello world!"));

Chalk 有一个易于使用的可组合的 API你只需将你想要的样式连锁和嵌套。

import chalk from "chalk";

const log = console.log;

// 组合风格化字符串和普通字符串
log(chalk.blue("Hello") + " World" + chalk.red("!"));

// 使用可连锁的API构成多种样式
log(chalk.blue.bgRed.bold("Hello world!"));

// 传入多个参数
log(chalk.blue("Hello", "World!", "Foo", "bar", "biz", "baz"));

// 嵌套样式
log(chalk.red("Hello", chalk.underline.bgBlue("world") + "!"));

// 同一类型的嵌套样式,甚至(颜色、下划线、背景)。
log(
	chalk.green(
		"I am a green line " +
			chalk.blue.underline.bold("with a blue substring") +
			" that becomes green again!"
	)
);

// ES2015 字符串模板
log(`
CPU: ${chalk.red("90%")}
RAM: ${chalk.green("40%")}
DISK: ${chalk.yellow("70%")}
`);

// ES2015 标签化字符串模板
log(chalk`
CPU: {red ${cpu.totalPercent}%}
RAM: {green ${(ram.used / ram.total) * 100}%}
DISK: {rgb(255,131,0) ${(disk.used / disk.total) * 100}%}
`);

// 在支持RGB颜色的终端中使用RGB颜色
log(chalk.rgb(123, 45, 67).underline("Underlined reddish color"));
log(chalk.hex("#DEADED").bold("Bold gray!"));

轻松地定义你自己的主题:

import chalk from "chalk";

const error = chalk.bold.red;
const warning = chalk.hex("#FFA500"); // Orange color

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

利用 console.log字符串替换的优势:

import chalk from "chalk";

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

API

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

Example: chalk.red.bold.underline('Hello', 'world');

styles连锁起来,并将最后一个作为一个方法,用一个字符串参数来调用。顺序并不重要,如果发生冲突,后面的样式会优先使用。这只是意味着chalk.red.yellow.green等同于chalk.green

多个参数将用空格分隔。

chalk.level

指定颜色支持的程度。

颜色支持是自动检测的,但是你可以通过设置level属性来覆盖它。然而,你应该只在你自己的代码中这样做,因为它适用于全球所有的 Chalk 消费者。

如果你需要在一个可重用的模块中改变这一点,请创建一个新的实例:

import { Chalk } from "chalk";

const customChalk = new Chalk({ level: 0 });
Level Description
0 禁用所有颜色
1 基本颜色支持(16 种颜色)
2 256 种颜色支持
3 支持真彩色(1600 万色)

supportsColor

检测终端是否支持颜色。内部使用并为你处理,但为了方便而暴露出来。

可以由用户用标志--color--no-color来重写。在无法使用--color的情况下,使用环境变量FORCE_COLOR=11 级),FORCE_COLOR=22 级),或FORCE_COLOR=33 级)来强制启用颜色,或FORCE_COLOR=0来强制禁用。使用FORCE_COLOR会覆盖所有其他颜色支持检查。

明确的 256/Truecolor 模式可以分别使用--color=256--color=16m标志启用。

chalkStderr and supportsColorStderr

chalkStderr包含一个单独的实例,配置了对stderr流而不是stdout的颜色支持。supportsColor的覆盖规则也适用于此。supportsColorStderr是为了方便而暴露的。

Styles

Modifiers

  • reset - 重置当前的颜色链
  • bold - 将文本加粗
  • dim - 发出少量的光.
  • italic - 文字变成斜体。(不广泛支持)
  • underline - 文字下划线。(不广泛支持)
  • inverse- 反向的背景和前景颜色
  • hidden - 打印文本,但使其不可见
  • strikethrough - 在文本的中心放置一条横线 (不广泛支持)
  • visible- 只有当 Chalk 的颜色级别大于 0 时,才会打印文本。 对于纯粹的外观的东西,可能很有用。

Colors

  • black
  • red
  • green
  • yellow
  • blue
  • magenta
  • cyan
  • white
  • blackBright (alias: gray, grey)
  • redBright
  • greenBright
  • yellowBright
  • blueBright
  • magentaBright
  • cyanBright
  • whiteBright

Background colors

  • bgBlack
  • bgRed
  • bgGreen
  • bgYellow
  • bgBlue
  • bgMagenta
  • bgCyan
  • bgWhite
  • bgBlackBright (alias: bgGray, bgGrey)
  • bgRedBright
  • bgGreenBright
  • bgYellowBright
  • bgBlueBright
  • bgMagentaBright
  • bgCyanBright
  • bgWhiteBright

Tagged template literal

可以作为标记的模板字面使用。

import chalk from "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 样式完全是连锁的。以下三条语句是等价的。

import chalk from "chalk";

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

请注意,函数样式(rgb()hex(),等等)在参数之间不能包含空格。

所有插值(Chalk `${foo}` )都通过.toString()方法转换为字符串。内插值字符串中的所有大括号({})都被转义。

支持 256 色和真彩色

在支持的终端应用程序上Chalk 支持 256 色和真彩(1600 万色)。

颜色从 1600 万个 RGB 值下采样到终端模拟器支持的 ANSI 颜色格式(或者通过指定{level:n}作为 Chalk 选项)。例如,配置为 1 级(基本颜色支持)的 Chalk 将把#FF0000红色的 RGB 值下采样为 31红色的 ANSI 转义)。

Examples:

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

这些模型的背景版本以 bg 为前缀,模块的第一层大写(例如,hex 代表前景色,bgHex 代表背景色)。

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

可以使用以下颜色模式:

  • rgb - Example: chalk.rgb(255, 136, 0).bold('Orange!')
  • hex - Example: chalk.hex('#FF8800').bold('Orange!')
  • ansi256 - Example: chalk.bgAnsi256(194)('Honeydew, more or less')

Browser support

从 Chrome 69 开始,开发者控制台就支持 ANSI 转义代码了

Windows

如果你在 Windows 上,请使用Windows Terminal而不是cmd.exe

Origin story

colors.js曾经是最流行的字符串造型模块,但它有严重的缺陷,如扩展String.prototype会导致各种问题而且该包没有维护。虽然有其他的包但它们要么做得太多要么做得不够。Chalk 是一个干净而集中的替代方案。

chalk for enterprise

作为 Tidelift 订阅的一部分提供

Chalk 和其他数千个软件包的维护者正在与 Tidelift 合作,为您用来构建应用程序的开源依赖提供商业支持和维护。节省时间,降低风险,提高代码健康度,同时向您使用的确切依赖的维护者付费。了解更多

相关内容

Maintainers