chalk库的使用

news2024/9/24 18:14:58

这篇文章主要是对chalk库官方文档的中文翻译以及我自己的一些理解。chalk的官方文档可以看这里。

首先说下chalk库的作用:美化终端输出的文本,例如添加不同的字体颜色、不同颜色的背景、粗体以及添加下划线等等,看下图:
在这里插入图片描述

优点

  • 富有表现力的API
  • 高性能
  • 允许嵌套样式
  • 支持256种颜色
  • 支持自动检测颜色
  • 不拓展String的prototype
  • 干净利落
  • 积极维护

安装

npm install chalk

使用

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

Chalk提供了一个易于使用的可组合API,您只需链接和嵌套所需的样式。

const chalk = require('chalk');
const log = console.log;
 
// 组合带样式的字符串和普通的字符串
log(chalk.blue('Hello') + ' World' + chalk.red('!'));
 
// 通过链式的API组合使用多种样式
log(chalk.blue.bgRed.bold('Hello world!'));
 
// 可以传入多个参数,就像console.log函数一样
log(chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz'));
 
// 嵌套样式,'world!'字符串也继承了外层的red样式
log(chalk.red('Hello', chalk.underline.bgBlue('world') + '!'));
 
// 相同样式的嵌套,具体采用哪个样式依据就近原则。
// 例如下面的chalk.green和chalk.blue,因为'with a blue substring'离chalk.blue近,所以是蓝色字体
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的标签模板字面量语法
// 标签模板字面量语法可以看这篇博客:https://blog.csdn.net/qq_21522331/article/details/103529222
log(chalk`
CPU: {red ${cpu.totalPercent}%}
RAM: {green ${ram.used / ram.total * 100}%}
DISK: {rgb(255,131,0) ${disk.used / disk.total * 100}%}
`);
 
// 可以使用keyword()、rgb()和hex()三种方法设置字体颜色
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.styles…(strings…)

例如: chalk.red.bold.underline(‘Hello’, ‘world’);
就和我们上面写的代码一样,没什么好说的。

chalk.level

设置颜色支持的级别,具体的级别有以下4种:

级别描述
0不支持所有的颜色
1只支持最基本的16种颜色
2支持256种颜色
3支持所有的颜色
(1) 你可以直接设置chalk的level属性:
chalk.level = 2;

(2) 还可以在创建新的chalk实例的时候指定:

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

chalk.supportsColor

检查终端支持颜色的情况,用法如下:

console.log(chalk.supportsColor)
//{ level: 3, hasBasic: true, has256: true, has16m: true }

chalk.stderr and chalk.stderr.supportsColor

chalk.stderr contains a separate instance configured with color support detected for stderr stream instead of stdout.
Override rules from chalk.supportsColor apply to this too. chalk.stderr.supportsColor is exposed for convenience.

样式

修饰符

  • reset - 重置当前样式链的样式。
  • bold - 粗体。
  • dim - 只发出少量的光。
  • italic - 斜体字。
  • underline - 下划线。
  • inverse - 反转背景和前景颜色,例如从黑底红字转换成红底黑字。
  • hidden - 打印文本,但使其不可见。
  • strikethrough - 在文本中心放置一条水平线。
  • visible - 仅当 chalk.level>0 时才打印文本。

支持的字体颜色

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

支持的背景颜色

  • bgBlack
  • bgRed
  • bgGreen
  • bgYellow
  • bgBlue
  • bgMagenta
  • bgCyan
  • bgWhite
  • bgBlackBright (alias: bgGray, bgGrey)
  • 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}.
`);

以下三种用法的效果是等价的:

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

颜色的设置

最基本的设置字体颜色的三种方式

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

最基本的设置背景颜色的三种方式

  • 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 keywords) - 例如: 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!’)
  • ansi - 例如: chalk.ansi(31).bgAnsi(93)(‘red on yellowBright’)
  • ansi256 - 例如: chalk.bgAnsi256(194)(‘Honeydew, more or less’)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1483225.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue2->3

Vue2->3 认识Vue31. Vue2 选项式 API vs Vue3 组合式API2. Vue3的优势 使用create-vue搭建Vue3项目1. 认识create-vue2. 使用create-vue创建项目 熟悉项目和关键文件组合式API - setup选项1. setup选项的写法和执行时机2. setup中写代码的特点3. <script setup>语法糖…

基于springboot+vue的社区养老服务平台

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

Kali Linux 安装 + 获取 root 权限 + 远程访问

一、什么是Kali kali是linux其中一个发行版&#xff0c;基于Debian&#xff0c;前身是BackTrack&#xff08;简称BT系统&#xff09;。kali系统内置大量渗透测试软件&#xff0c;可以说是巨大的渗透系统&#xff0c;涵盖了多个领域&#xff0c;如无线网络、数字取证、服务器、密…

【MySQL】表的内连和外连(重点)

表的连接分为内连和外连。 一、内连接 内连接实际上就是利用 where 子句对两种表形成的笛卡儿积进行筛选&#xff0c;前面学习的查询都是内连接&#xff0c;也是在开发过程中使用的最多的连接查询。 select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件; 注意&…

Java核心技术知识导航(周更)

写在文章开头 面试旺季笔者也收到很多读者的私信&#xff0c;所以笔者就对近期不断更新迭代补充的Java核心知识点进行一个导航汇总。感兴趣的读者建议收藏&#xff0c;这些专栏系列笔者会在每个周末进行迭代、补充、更新&#xff0c;希望对你有帮助。 你好&#xff0c;我叫sh…

算法学习路径图

1.总览 算法学习路径 2.学习资料 2.1 Java算法与数据结构 Java算法与数据结构

【C++提高编程】

C提高编程 C提高编程1 模板1.1 模板的概念1.2 函数模板1.2.1 函数模板语法1.2.2 函数模板注意事项1.2.3 函数模板案例1.2.4 普通函数与函数模板的区别1.2.5 普通函数与函数模板的调用规则1.2.6 模板的局限性 1.3 类模板1.3.1 类模板语法1.3.2 类模板与函数模板区别1.3.3 类模板…

运筹学_1.1.2 线性规划问题-图解法

1.1.2 线性规划问题-图解法 一、图解法求解步骤&#xff08;只适用于两个决策变量问题&#xff09;二、图解法作图实例三、图解法分析线性规划几种解的情况1、唯一最优解2、无穷多最优解3、无界解4、无解或无可行解 四、图解法的几点启示 一、图解法求解步骤&#xff08;只适用…

内网信息搜集

目录 内网基础知识 基本流程图 怎么判断是否在域内 常规信息类收集-应用&服务&权限等 cs信息搜集 bloodhound安装及使用 内网基础知识 工作组&#xff1a;将不同的计算机按照功能分别列入不同的组&#xff0c;想要访问某个部门的资源&#xff0c;只要在【网络】里…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的钢材表面缺陷检测系统(Python+PySide6界面+训练代码)

摘要&#xff1a;开发钢材表面缺陷检测系统对于保障制造质量和提高生产效率具有关键作用。本篇博客详细介绍了如何运用深度学习构建一个钢材表面缺陷检测系统&#xff0c;并提供了完整的实现代码。该系统基于强大的YOLOv8算法&#xff0c;并对比了YOLOv7、YOLOv6、YOLOv5&#…

【服务器数据恢复】昆腾存储中raid5磁盘阵列数据恢复案例

服务器数据恢复环境&故障&#xff1a; 10个磁盘柜&#xff0c;每个磁盘柜配24块硬盘。9个磁盘柜用于存储数据&#xff0c;1个磁盘柜用于存储元数据。 元数据存储中24块硬盘&#xff0c;组建了9组RAID1阵列1组RAID10阵列&#xff0c;4个全局热备硬盘。 数据存储中&#xff0…

Vue.js的双向绑定原理

Vue的双向绑定 vue双向绑定是其最重要的核心亮点&#xff0c;其原理也很简单&#xff0c;这里做个简单总结 vue2的双向绑定是利用的Object.definePropertyvue3的双向绑定是利用的 ES6Porxy中的defineProperty(target, propKey, propDesc 其作用类似于Object.defineProperty …

水库安全监测方案(福建地区水库安全监测案例分享)

我司星创易联最近在福建省受到了一个水库安全监测系统项目的委托。该水库位于福建中部山区,作为该地区的重要防洪与供水工程,对下游数十万人的生活产生重大影响。但是因为水库附近地质情况复杂,水库大坝在多次洪水冲击下出现一定病害,亟须全面加强对水库大坝安全状况的监测,以确…

C语言---文件操作(1)

1.文件的打开和关闭 fopen有2个参数&#xff0c;第一个是文件的名字&#xff0c;第二个是打开的模式&#xff08;例如是读文件还是写文件&#xff09; (1)该文件夹下面没有data.txt文件&#xff0c;但是我执行了read操作&#xff0c;所以会显示这样的错误 &#xff08;2&#…

php httpfs链接hdfs

一.代码&#xff08;有bug&#xff09; GitHub - michaelbutler/php-WebHDFS: A PHP client for WebHDFS 二.调用代码 1.代码1.代码 require_once(../webhdfs/src/org/apache/hadoop/WebHDFS.php);require_once(../webhdfs/src/org/apache/hadoop/tools/Curl.php); require_o…

YOLOv5 + Flask + Vue实现基于深度学习算法的垃圾检测系统源码+数据库

✨界面展示 登录 注册 垃圾检测 用户管理 404 Not Found页面 403 拒绝访问页面 黑暗模式 深蓝模式 灰色模式 色弱模式 ✨技术特性 深度学习 YOLOv5&#x1f680;&#xff1a;高效、准确的目标检测算法&#xff0c;实时识别检测图像和视频中的各种对象PyTorch&#xff1a;机器…

对于《幻兽帕鲁》这样的游戏,如何优化服务器性能以提高游戏体验?

对于《幻兽帕鲁》这样的游戏&#xff0c;如何评估和优化服务器性能以提高游戏体验&#xff1f; 硬件配置优化&#xff1a;选择高性能的服务器&#xff0c;如4核16G的幻兽帕鲁服务器&#xff0c;这样可以保证有足够的计算性能和内存容量来支持游戏的运行。同时&#xff0c;考虑到…

k8s-kubeapps图形化管理 21

结合harbor仓库 由于kubeapps不读取hosts解析&#xff0c;因此需要添加本地仓库域名解析&#xff08;dns解析&#xff09; 更改context为全局模式 添加repo仓库 复制ca证书 添加成功 图形化部署 更新部署应用版本 再次进行部署 上传nginx 每隔十分钟会自动进行刷新 在本地仓库…

机器学习 | 基本概念梳理——数据集评估,任务,训练和测试,期望结果

文章目录 1 整体概念梳理1.1 数据集与数据术语——原材料1.2 任务术语——目标1.3 训练和测试术语——怎么做1.4 结果——预期期望 整体框架 机器学习的基本概念全梳理 我们通过一个生动形象的例子来介绍这些概念 我们假设有一个任务是根据地理天气等特征位置预测经纬度 1 整…

FL Studio21编曲制作软件中文版2024最新版本功能详细介绍

一、软件概述 FL Studio 21&#xff0c;全称Fruity Loops Studio 21&#xff0c;是一款功能强大的编曲制作软件&#xff0c;被广泛应用于音乐创作、编曲、录音、混音和后期制作等领域。其中文版为中国的音乐制作人和爱好者提供了更加便捷的操作体验。 FL Studio 21 Win-安装包…