create-vue源码学习之 gradient-string 渐变色打印

效果

在使用 create-vue 脚手架时,想实现如下的打印效果。
在这里插入图片描述

探究过程

翻到源码里看到这一行
没错,绿色部分就是告诉我们如何生成的。可以看到引入了 gradient-string 包
在这里插入图片描述
于是乎,我来试试

pnpm i gradient-string    
pnpm i --save-dev @types/gradient-string
import gradient from 'gradient-string'async function init() {console.log()// process.stdout.isTTY 检查终端是否支持彩色输出// process.stdout.getColorDepth() > 8  检查终端的颜色深度。颜色深度通常以位(bit)为单位,8位表示256色,24位表示真彩色。console.log(process.stdout.isTTY && process.stdout.getColorDepth() > 8? banners.gradientBanner: banners.defaultBanner)console.log()let coolGradient = gradient([{ color: '#42d392', pos: 0 },{ color: '#42d392', pos: 0.1 },{ color: '#647eff', pos: 1 }])('Vue.js - The Progressive JavaScript Framework')console.log('🚀 ~ coolGradient:', coolGradient)
}init().catch((e) => {console.error(e)
})

看看打印结果:
在这里插入图片描述

可是我也不想引入包,想直接输出一串 ANSI 转义码,咋办?

先来分析下 create-vue 源码的这段 ANSI 转义码
在这里插入图片描述

在终端中,ANSI 转义码用于控制文本的颜色、背景色、样式等。这些转义码以 \x1B[ 开头,后面跟着一系列参数,最后以 m 结束。例如,\x1B[38;2;66;211;146m 表示设置前景色为 RGB(66, 211, 146)。其中红色标注的部分为我们要打印的文本 “Vue”。

愣是没找到合适的打印方法,突然想起一个骚操作那就是,encodeURI(coolGradient) ,来试试看
在这里插入图片描述
可以看到除了 %1B%5B,其他都一样,那就来个全局替换 %1B%5B --> \x1B[

console.log('🚀 ~ coolGradient:', encodeURI(coolGradient).replaceAll('%1B%5B', '\x1B['))

打印结果
在这里插入图片描述
这里 %20 就是空格啦,同样的思路,全局替换下就可以了。

这时候我们就可以拿到打印的字符串结果,去替换引入的 gradient-string 包啦。

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

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

相关文章

1.4、存储系统

目录 存储器的层次结构外存(辅存)内存CPU的寄存器Cache总结举例局部性原理 练习题 高速缓存Cache总结举例总结 练习题 Cache的地址映像方法直接相联映像全相联映像组相联映像练习题 Cache替换算法Cache页面淘汰算法Cache的读写过程练习题 磁盘总结固态硬…

人工智能(AI)在办公场所的广泛应用

人工智能(AI)在办公场所的广泛应用正逐步改变着我们的工作方式和效率。随着技术的进步,越来越多的公司和组织开始采用各种AI技术来优化工作流程、提升生产力,并提供更好的用户体验。以下是人工智能在办公方面的一些主要作用和影响…

Ecovadis评估的流程是什么

Ecovadis评估流程是一个全面、系统且注重细节的过程,旨在为企业提供关于其可持续性表现的深入洞察。这一评估不仅覆盖了企业在环境、社会和治理方面的多个方面,还强调了持续改进的重要性,确保企业能够不断提升其CSR(企业社会责任&…

社交圈子聊天交友系统搭建社交app开发:陌生交友发布动态圈子单聊打招呼群聊app介绍

系统概述 社交圈子部天交友系统是一个集成即时通讯、社区互动、用户管理等功能的在线社交平台。它支持用户创建个人资料,加入兴趣围子,通过文字、图片、语音、视频等多种方式进行交流,满足用户在不同场景下的社交需求 核心功能 -,…

Window系统下MySQL安装教程

1、MySQL各版本介绍 MySQL Community Edition MySQL Community Edition 是MySQL官方发布的免费版本,适用于个人用户和小型团队使用。它包含了基本的数据库功能,如创建表、插入数据、查询数据等。 MySQL Enterprise Edition MySQL Enterprise Edition 是…

【数据结构】AVL树(图文解析 + 代码实现)

目录 1、AVL树的概念 2、AVL树结点的定义 3、AVL树的插入 4、AVL树的旋转 4.1 左单旋 4.2 右单旋 4.3 右左双旋 4.4 左右双旋 5、AVL树的验证 6、AVL树的性能 前面对map/multimap/set/multiset进行了简单的介绍,会大仙,这几个容器有个共同点是…

【AI大模型】程序员AI的未来——Copilot还是Claude3.5 Sonnet?

近期,Anthropic发布了Claude 3.5 的“大杯”模型 —— Claude 3.5 Sonnet! 这次发布的 Sonnet 代表意大利的“十四行诗”,结构复杂,在智能水平、功能多样性和处理能力上都有所提升,能够应对更复杂的认知任务&#xff…

解决VS2019+Qt联合开发双击Resource Files弹不出资源编辑器问题

目录 一、右键Resource.qrc文件 二、选择打开方式 三、鼠标选择Qt Resource Editor,并设置为默认值 四、最后点击确定,再次双击qrc文件,成功打开 最近在开发中,遇见一个问题,在VS联合Qt开发时,需要添加…

前后端分离项目部署,vue--nagix发布部署,.net--API发布部署。

目录 Nginx免安装部署文件包准备一、vue前端部署1、修改http.js2、npm run build 编译项目3、解压Nginx免安装,修改nginx.conf二、.net后端发布部署1、编辑appsetting.json,配置跨域请求2、配置WebApi,点击发布3、配置文件发布到那个文件夹4、配置发布相关选项5、点击保存,…

推荐一款基于 SpringBoot2 的后台管理系统脚手架,非常轻量简单(附源码)

前言 在现代软件开发中,后台管理系统是企业数字化转型的关键组成部分。然而,现有软件常常存在一些痛点,如复杂的权限管理、缺乏灵活的工作流配置、监控和日志功能不完善等。此外,许多系统study 成本高,依赖关系复杂&a…

VS2015加断点(红色),修改过后,断点变为白色不能命中

实际这个问题是因为:源文件和原始版本不同。解决方法有二: 一,在断点上右键,选择“位置”》勾选”允许源代码与原始版本不同; 二,点击菜单栏“调试”》“选项和设置”》“常规”》去掉“要求源文件与原始…

MINE:Mutual Information Neural Estimation

Mutual Information Neural Estimation 摘要 文章认为高维连续随机变量之间的互信息可以通过在神经网络上梯度下降优化得到。 文中提出了互信息估计器(Mutual Information Neural Estimator),它在维度和 样本大小上都是可伸缩的,可以通过反向传播训练的&#xff0…

OCC 布尔运算

目录 一、裁剪原理 二、使用详解 1. 差集 (Cut) 2. 联合 (Fuse/Union) 3. 交集 (Common/Intersection) 三、例子 1、两个盒子裁剪 2、任意面裁剪 四、总结 一、裁剪原理 OpenCASCADE (OCC) 中的裁剪(Boolean Cut)原理主要基于布尔运算。布尔运算是计算机图形学中的…

力扣第二十四题——两两交换链表中的节点

内容介绍 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例 1: 输入:head [1,2,3,4] 输出&#xff…

Python-numpy基础--------2

1.full()创建函数 目录 1.full()创建函数 2.创建单位矩阵 3.linspace创建 4.logspace 创建 5.二维数组的索引和切片: 1.索引直接获取 在NumPy中,full() 函数用于创建一个给定形状、类型的新数组,并用指定的值填充这个数组。这个函数非…

数模·插值和拟合算法

插值 将离散的点连成曲线或者线段的一种方法 题目中有"任意时刻任意的量"时使用插值,因为插值一定经过样本点 插值函数的概念 插值函数与样本离散的点一一重合 插值函数往往有多个区间,多个区间插值函数样态不完全一样,简单来说就…

AWS监控工具,监控性能指标

执行AWS监视是为了跟踪在AWS环境中主动运行的应用程序工作负载和资源,AWS监视器跟踪各种AWS云指标,以帮助提高在其上运行的应用程序的整体性能。 借助阈值突破警报系统,AWS应用程序监控在识别性能瓶颈来源方面起着至关重要的作用&#xff0c…

linux版mysql8配置表名不区分大小写

mysql8的安装步骤可参考: mysql8的安装步骤 如果在安装mysql8,初始化之前,没有在my.cnf配置忽略大小写配置: [mysqld] lower_case_table_names1我们就需要重新初始化mysql 1 备份数据库文件 2 停止mysql服务 systemctl stop …

HTML+CSS+JS扫雷(可自定义雷数,大小,可插旗)

源代码在最后面 点赞❤️ 关注⭐️谢谢&#x1f61c; 实现功能 随机扫雷自定义地雷数、游戏棋盘大小插旗 效果图&#xff08;部分图片&#xff09; 源代码 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><m…

学习TS-类

class Car{ // 字段 name : String; age : Number; //静态 静态成员可以直接通过类名调用 static shooch:string; // 构造函数 // 构造函数会在对象创建时调用 constructor(name:string,age:Number){ //在实例方法中&#xff0c;this就表示当前当前的实例 //在构造函数中当前对…