vscode 调试控制台
Windows 终端
Dart 的控制台/终端文本着色和样式库
‘终端字符串样式尽善尽美’
我为我的 Dart/Flutter 开发日志创建这个已有近两年了,我终于花了时间对其进行清理并发布了一个包。在此期间,我为 Visual Studio Code 调试控制台添加了完整的 ANSI 支持,并刚刚完成了 Dart-Pad 控制台的完整 ANSI 支持。您可以在 VSCode 调试器中使用它来实现今天多彩、风格化的日志记录。?
查看 example/chalkdart_example.dart 以获取有关其功能的一些酷炫示例。
如果您使用过 npm/node.js 环境中的 Chalk.js 包,您就会知道它使文本着色和样式化变得多么方便!这个 ChalkDart 版本基本上可以与 js 版本完全相同地使用。
完整的 API Dart 文档可以在 这里找到
功能和 Bug
请在 问题跟踪器 上提交功能请求和 Bug。
亮点
- 富有表现力的 API
- 高性能
- 能够嵌套样式
- 支持动态参数列表,并自动处理 Maps、Lists、Iterables 和 Function 闭包的打印
- 256 色/真彩色支持
- 可以通过名称访问所有标准的 X11/CSS/SVG 颜色。
- 忽略自动检测到的 ANSI 颜色支持/因为常见的 Dart/Flutter IDE 会不正确地报告此项。
- 不是
String类的扩展。 - 简洁专注
- 积极维护
安装
$ dart pub add chalkdart
用法
import 'package:chalkdart/chalk.dart';
print(chalk.yellow.onBlue('Hello world!'));
Chalk 提供了一个易于使用的可组合 API,您只需链接和嵌套所需的样式即可。
import 'package:chalkdart/chalk.dart';
// Combine styled and normal strings
print(chalk.blue('Hello') + ' World' + chalk.red('!'));
// Compose multiple styles using the chainable API
print(chalk.blue.onRed.bold('Hello world!'));
// Pass in multiple arguments
print(chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz'));
// Nest styles
print(chalk.red('Hello', chalk.underline.bgBlue('world') + '!'));
// Nest styles of the same type even (color, underline, background)
print(chalk.green(
'I am a green line ' +
chalk.blue.underline.bold('with a blue substring') +
' that becomes green again!'
));
// use in multiline string with interpolation
print('''
CPU: ${chalk.red('90%')}
RAM: ${chalk.green('40%')}
DISK: ${chalk.yellow('70%')}
''');
// or with inline calcs
print('''
CPU: ${chalk.red(cpu.totalPercent)}%
RAM: ${chalk.green((ram.used / ram.total * 100))}%
DISK: ${chalk.rgb(255,131,0)((disk.used / disk.total * 100))}%
''');
// Use RGB colors in debug console or terminals that support it.
print(chalk.keyword('orange')('Yay for orange colored text!'));
print(chalk.rgb(123, 45, 67).underline('Underlined reddish color'));
print(chalk.hex('#DEADED').bold('Bold gray!'));
轻松定义您自己的主题
import 'package:chalkdart/chalk.dart';
const error = chalk.bold.red;
const warning = chalk.keyword('orange');
print(error('Error!'));
print(warning('Warning!'));
const name = 'Tim Maffett';
print(chalk.green('Hello $name'));
//=> ‘你好 Tim Maffett’
API
chalk.<style>[.<style>...](string, [string...])
示例:chalk.red.bold.underline('Hello', 'world');
链接 样式,并将最后一个样式调用为一个带字符串参数的方法。顺序无关紧要,在发生冲突时,后面的样式会优先。这仅仅意味着 chalk.red.yellow.green 等同于 chalk.green。
可以使用字符串插值,或者列出多个参数,它们将用空格(或 joinWith 指定的字符串)分隔。参数可以是任何类型,Map<>、List<>、Iterable 和 Functions/Function 闭包也受支持。默认情况下,列表会用空格连接在一起,但可以使用 joinWith 方法指定不同的连接字符串。最多可以包含 15 个参数作为 Chalk 对象的参数。
样式
修饰符
reset– 重置当前颜色链。blink– 使文本闪烁。rapidblink– 使文本快速闪烁。bold– 使文本加粗。dim– 只发射少量光。italic– 使文本倾斜。underline– 使文本加下划线。doubleunderline– 更粗的文本下划线。overline– 使文本加顶线。inverse(或invert) – 反转前景色和背景色。hidden– 打印文本,但使其不可见。superscript– 使文本变为上标。subscript– 使文本变为下标。strikethrough– 在文本中间画一条水平线。visible– 仅当 Chalk 的颜色级别 > 0 时打印文本。对于纯粹美学的东西可能很有用。font1–font10– 更改字体
其中一些 ANSI 样式在所有终端模拟器中并不普遍支持,但我已为标准的 Visual Studio Code 调试控制台以及 Dart-Pad 控制台添加了完整的支持。Android Studio 也在其调试控制台中具有相当完整的支持。有关如何使用 CSS 将字体映射到 font1 到 font10 的信息,请参阅 VSCode 部分。
颜色
基本 ANSI 颜色的确切 RGB 值取决于控制台/终端的渲染 — 并且可以在某些终端(如 Windows 终端)上进行配置 — 更多信息请参见此处
我包含了原始 JS Chalk 的 ‘xxxxBright’ 方法名称,以供可能需要与原始 JS Chalk 兼容的用户使用。
黑色红色绿色黄色蓝色品红色青色白色brightBlack(别名blackBright,gray,grey)brightRed(别名redBright)brightGreen(别名greenBright)brightYellow(别名yellowBright)brightBlue(别名blueBright)brightMagenta(别名magentaBright)brightCyan(别名cyanBright)brightWhite(别名whiteBright)
背景色
它们通过在颜色前加上“on”来命名。Chalk’Dart 倾向于使用“onXXXXX”风格来指定背景色,因为动词“on”使得链式方法读起来更像一个句子(这是 Dart 的方式)。我包含了原始 Chalk 的 ‘bgXXXX’ 方法名称,以供可能偏爱该方案的用户使用(本质上是为了与原始 JS Chalk 的兼容性)。
例如,“onBlue”和“bgBlue”是相同的,这取决于用户如何阅读他们的代码。
onBlack(别名bgBlack)onRed(别名bgRed)onGreen(别名bgGreen)onYellow(别名bgYellow)onBlue(别名bgBlue)onMagenta(别名bgMagenta)onCyan(别名bgCyan)onWhite(别名bgWhite)onBrightBlack/onGray/onGrey(别名:bgBlackBright,bgGray,bgGrey)onBrightRed(别名bgRedBright)onBrightGreen(别名bgGreenBright)onBrightYellow(别名bgYellowBright)onBrightBlue(别名bgBlueBright)onBrightMagenta(别名bgMagentaBright)onBrightCyan(别名bgCyanBright)onBrightWhite(别名bgWhiteBright)
256 色和真彩色支持
Chalk 支持 256 色和 真彩色(1600 万色),支持这些颜色的终端应用程序。
颜色会从 1600 万 RGB 值降采样到终端模拟器支持的 ANSI 颜色格式(或通过指定 {level: n} 作为 Chalk 选项)。例如,配置为运行在级别 1(基本颜色支持)的 Chalk 会将 RGB 值 #FF0000(红色)降采样到 31(ANSI 红色转义码)。
示例
chalk.hex('#DEADED').underline('Hello, world!')chalk.keyword('orange')('一些橙色文本')chalk.rgb(15, 100, 204).inverse('Hello!')
这些模型的背景版本以 bg 开头,并且模块的第一级大写(例如,前景色为 keyword,背景色为 bgKeyword)。
chalk.onHex('#DEADED').underline('Hello, world!')chalk.onKeyword('orange')('一些橙色文本')chalk.onRgb(15, 100, 204).inverse('Hello!')
可以使用以下颜色模型
-
rgb– 示例:chalk.rgb(255, 136, 0).bold('Orange!') -
hex– 示例:chalk.hex('#FF8800').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!') -
xyz– 示例:chalk.xyz(0.9, 0.9, 0.1).bold('Yellow!') -
lab– 示例:chalk.lab(85, 0, 108).bold('yellow-Orange!') -
ansi– 示例:chalk.ansi(31).bgAnsi(93)('红底黄字') -
ansi256– 示例:chalk.onAnsi256(194)('蜜瓜色,差不多') -
keyword(X11/CSS/SVG 颜色关键字) – 示例:chalk.cornFlowerBlue.onBeige或chalk.keyword('orange').bold('Orange!')关键字表可以通过.来扩展,并且可以通过.访问新关键字。
Chalk.addColorKeywordHex('myfavorite', 0x6495ED ); // using hex int
chalk.color.myfavorite('This is my favorite color');
Chalk.addColorKeywordHex('my2ndFavorite', '#6A5ACD' ); // or using string
chalk.color.my2ndfavorite('This is my 2nd favorite color');
或者
chalk.keyword('myfavorite)('Using the keyword() method');
chalk.color.my2ndfavorite('This is my 2nd favorite color');
或导入 X11 扩展方法以获得每个 X11/CSS/SVG 颜色名称的正确方法。通过此,您可以获得可用颜色的代码完成以及颜色名称的编译时检查。
import 'package:chalkdart/chalk.dart';
import 'package:chalkdart/chalk_x11.dart'; // get methods for x11/css/svg color name keywords
chalk.cornflowerBlue.onLimeGreen('Hey there!);
// without extension methods you can use the dynamic keyword lookup method:
chalk.color.cornflowerBlue.onLimeGreen('Hi Again!);
// or off x11
chalk.x11.cornflowerBlue.onLimeGreen('Hi Again!);
// or off csscolor
chalk.csscolor.cornflowerBlue.onLimeGreen('Hi Again!);
chalk.level
指定颜色支持的级别。
颜色支持会自动检测,但您可以覆盖它通过设置 level 属性。但是,您应该只在自己的代码中执行此操作,因为它会全局应用于所有 Chalk 用户。请注意,Dart 会确定 VSCode 调试控制台和 Android Studio 调试控制台不支持 ANSI 控制序列,而实际上它们支持,因此默认情况下级别设置为 3(完整颜色/序列支持),无论控制台/终端报告什么。如果您想要一个不同的值,则必须自己设置。
如果您需要在可重用模块中更改此设置,请创建一个新实例
var chalkWithLevel0 = chalk.instance(level: 0);
// this version is provided for users of the JS version of Chalk
var chalkWithLevel0 = chalk.Instance(level: 0);
| 级别 | 描述 |
|---|---|
0 |
禁用所有颜色 |
1 |
基本颜色支持(16 色) |
2 |
256 色支持 |
3 |
真彩色支持(1600 万色) |
IDE 支持
Android Studio、IntelliJ 和 Visual Studio Code 的当前版本的终端和调试控制台支持 24 位/1600 万色 ANSI 代码和大多数属性。但是,它们都报告它们*不*支持 ANSI 代码。因此,Chalk’Dart 默认支持完整的级别 3(24 位)ANSI 代码。
VSCode
可以在 VSCode 的调试控制台中设置使用的字体。有关更多信息,请在此处 查找。
浏览器支持
Chrome、Firefox 和 Edge 在其各自的开发者控制台中本地支持 ANSI 转义码。从 Dart Web 代码中,您可以使用 window.console.log(...) 将消息记录到浏览器的调试控制台。
Windows
如果您使用的是 Windows,请善待自己,使用 Windows 终端而不是 cmd.exe。
相关
- chalk-js – JavaScript 的原始 Chalk 库模块,它是这个库的灵感来源(并且也是这个 README 的基础)!






