前端架构: 脚手架之Chalk和Chalk-CLI使用教程

前端脚手架(cli)实现 背景 整合前端团队代码规范, 以及统一整体架构 使用库 本文借鉴vue-cli思路,用到的库有: commander.js,可以自动的解析命令和参数,用于处理用户输入的命令。 download-git-repo,下载并提取 git 仓库,用于下载项目模板。 inquirer.js,通用的命令行用户界面集合,用于和用户进行交互。 handlebars.js,模板引擎,将用户提交的信息动态填... 阅读详情

Chalk

  • Chalk 是粉笔的意思, 它想表达的是,给我们的命令行中的文本添加颜色类似彩色粉笔的功能

  • 在官方文档当中,它的 Highlights 核心特性

    Expressive API
    Highly performant
    No dependencies
    Ability to nest styles
    256/Truecolor color support
    Auto-detects color support
    Doesn't extend String.prototype
    Clean and focused
    Actively maintained
    Used by ~86,000 packages as of October 4, 2022
    
    • 它的性能很高,没有三方依赖
    • 它能够支持256以及真彩色的实现
      • 也就是说这个库可以让你自己去定义它的色彩
      • 并不是说命令行中当中的256色之外能够支持更多
      • 如果终端不支持,肯定也是无效的
    • 在 2022.10.4 的时候,已经有超过 86000个包 引用它
      • 所以说,它是一个非常非常流行的库
  • 安装 $ npm i -S chalk

  • 使用

    // chalk.js
    const chalk = require('chalk');
    console.log(chalk);
    
    • 这种情况下,会报错,会提示 Instead change the require of index.js in /Users/xxx/Desktop/ui/src/chalk.js to a dynamic import() which is available in all CommonJS modules.
    • 现在这个库已经默认使用 ES Module 了,在其源码中都是用的 ES Module 的语法
  • 现在可以通过两种方式解决

    • 方案1.在package.json中添加 "type": "module", 配置
    • 方案2.使用打包工具
    • 选择方案1
      import chalk from 'chalk';
      console.log(chalk.red('Hello Chalk') + ' 这里就是默认颜色' + chalk.blue(' 这里是蓝色'));
      
  • 从上面的例子可以看出,多种种颜色,混搭使用

  • 再来看看链式调用

    import chalk from 'chalk';
    console.log(chalk.red.bgGreen.bold('Hello Chalk'));
    
  • 多参数方式

    import chalk from 'chalk';
    console.log(chalk.red('hello', 'chalk'))
    
    • 这样可以多参数拼接,通过空格来拼接
  • 嵌套调用

    import chalk from 'chalk';
    console.log(chalk.red('Hello', chalk.underline('Chalk')));
    
  • 定义颜色在256色之外(rgb或hex随意定义)并嵌套

    import chalk from 'chalk';
    console.log(chalk.rgb(255,255,0).underline('Hello Chalk')); // 链式调用
    console.log(chalk.hex('#ff0000').bold('你好,世界')); // 链式调用
    console.log(chalk.hex('#0ff000')('Hello Wrold')); // 柯里化调用, 只能支持这种,不能继续加()了
    
  • 基于以上示例,可以定义一些列的工具函数, 例如

    import chalk from 'chalk';
    
    const error = (text) => console.log(chalk.bold.hex('#ff0000')(text));
    const warning = (text) => console.log(chalk.bold.hex('#ffa500')(text));
    
    error('Error')
    warning('Warning')
    
  • 自定义chalk使用, 传入一个Option参数,其实目前就支持这一个level参数

    import { Chalk } from 'chalk'; // 拿到构造器 Chalk
    
    /**
    Specify the color support for Chalk.
    
    By default, color support is automatically detected based on the environment.
    
    Levels:
    - `0` - All colors disabled.
    - `1` - Basic 16 colors support.
    - `2` - ANSI 256 colors support.
    - `3` - Truecolor 16 million colors support.
    */
    // const cc = new Chalk({level: 0}) // 0 所有颜色不再支持,调用 .red, .blue 等不会生效; 不在[0,3]抛异常
    const cc = new Chalk({level: 3}) // 0 所有颜色不再支持,调用 .red, .blue 等不会生效
    
    console.log(cc.hex('#0ff000')('Hello Wrold'));
    

chalk-cli

  • 文档:https://www.npmjs.com/package/chalk-cli
  • 可全局安装 $ npm install --global chalk-cli
  • 可在全局生成一个 chalk 命令
    $ chalk --help
    
      Usage
        $ chalk <style> ... <string>
        $ echo <string> | chalk <style> ...
    
      Options
        --template, -t    Style template. The `~` character negates the style.
        --stdin           Read input from stdin rather than from arguments.
        --no-newline, -n  Don't emit a newline (`\n`) after the input.
        --demo            Demo of all Chalk styles.
    
      Examples
        $ chalk red bold 'Unicorns & Rainbows'
        $ chalk -t '{red.bold Unicorns & Rainbows}'
        $ chalk -t '{red.bold Dungeons and Dragons {~bold.blue (with added fairies)}}'
        $ echo 'Unicorns from stdin' | chalk --stdin red bold
    
    • -t 按照一定格式输出
      • $ chalk -t 'hello chalk'
        hello chalk
        
      • $ chalk -t '{red hello chalk}'
        hello chalk
        
        • 同样输出,但是显示的是 红色
      • $ chalk -t '{red.bold hello chalk}'
        hello chalk
        
        • 标红并加粗
    • $ chalk red bold hello 或 chalk red bold 'hello chalk'
      • 输出 hello 或 hello chalk
      • 标红并加粗
      • 注意,字符串中间有空格需要加引号
    • $ --stdin 接收上一个输入的结果
      • $ echo "Hello Chalk" | chalk red bold 这种,会把 bold 当做参数,输出的是 bold
      • $ echo "Hello Chalk" | chalk red bold --stdin
        • 像是这种, 会输出 Hello Chalk 并且标红加粗
        • –stdin 会把上一个命令的结果透传到chalk中来进行展示
    • $ -n 不会触发新行
      • $ chalk -n red bold 'hello chalk'
      • 这里就不会有换行展示,红色字体之后紧接着系统, 如: hello chalk Wang:~ wang$
    • $ --demo 把 chalk 所有支持的命令都显示出来, 如下
      • 这些都是它支持的用法,包括前景色,背景色等
npm包学习 想开发自己的的工具包,那必然要借鉴一些常用的npm包来帮我们解决一些问题,下面就罗列一些在学习vue-cli实现原理时候遇到的一些依赖包吧。 阅读详情

相关推荐

JS:chalk控制台输出带有颜色的文字

文档:https://www.npmjs.com/package/chalk 安装 $ npm install chalk 示例 demo.js const chalk = require('chalk'); console.log(chalk.blue('Hello world!')); 想要输出带有颜色的文字,需要在控制台启动 $ node demo.js

彭世瑜的博客 2292

chalk开源库

chalk的使用与避坑

weixin_47359038的博客 3351

保姆级教程:用OpenCV搞定鱼眼双目相机的标定与测距(附完整C++代码)

本文详细介绍了使用OpenCV进行鱼眼双目相机标定与测距的全流程,包括环境搭建、数据采集、单目标定、双目标定、立体校正和视差计算等核心步骤。通过完整的C++代码示例和参数调优指南,帮助开发者快速实现高精度的双目测距系统,适用于机器人导航、VR全景拍摄等领域。

weixin_42573113的博客 390

npm包——chalk

chalk 是一个用于在 Node.js 应用程序中给终端输出上色的库,主要通过在字符串中插入 ANSI 转义序列来改变文字的颜色、背景色以及其他样式。它使得日志信息和命令行输出更加美观和易读,特别是在调试和输出信息时。补充:在浏览器控制台输入带颜色的内容需要使用console.log(‘%c目标文本’,‘样式代码’),比如:console.log(‘%c你好!

adafdsfas的博客 439

手把手教你用STM32F303和LAN9252搭建EtherCAT从站(附IO/AD/DA完整代码)

本文详细介绍了如何使用STM32F303和LAN9252搭建EtherCAT从站,涵盖硬件选型、开发环境配置、协议栈移植及IO/AD/DA功能实现。通过实战指南和完整代码,帮助开发者快速掌握工业自动化中的实时通信技术,提升系统性能与可靠性。

weixin_26802933的博客 235

elementui中el-select和el-tree实现下拉树形多选功能

elementui中el-select和el-tree实现下拉树形多选功能

weixin_49203377的博客 6558

node终端样式库: chalk 颜色库的使用方法

chalk.js可以为 console.log() 的输出信息配置不同的显示颜色和样式。比如 node 在输出端的文字默认是黑白的,为了使输出内容更加个性化更加突出,我们可以使用 chalk.js 添加文字背景、改变文字颜色。

sinat_33255495的博客 2687

手把手教你用ADS仿真FMMT417雪崩三极管,搞定射频脉冲源设计

本文详细介绍了如何使用ADS仿真工具设计基于FMMT417雪崩三极管的射频脉冲源。从器件选型、SPICE模型导入到电路设计与优化,提供了一套完整的实操方案,特别适合射频脉冲设计的初学者。通过级联设计和实测验证,帮助工程师快速掌握雪崩电路的应用技巧,提升射频脉冲源的设计效率。

weixin_30905981的博客 491

前端脚手架/CLI工具的深度解析与实战应用

本文深入探讨脚手架工具的原理和应用,并结合理论与实践,详细解读主流脚手架工具的内部机制,帮助开发者系统地掌握构建和使用这些工具的技能,同时提供从零开始创建自己的前端脚手架的全面指导和实战经验。

weixin_51517346的博客 2239

PCIe协议之 Equalization篇 之 理论篇 之 FFE

作为最后一道“精加工”工序,DFE利用其不放大噪声的优势,精准地消除残余的、强烈的后光标ISI,最终得到一个非常干净、张得很开的眼图,供判决器使用。信号经过信道衰减后变得模糊,首先由CTLE进行“粗调”,提供一个宽频带的增益,将眼图初步打开,为后面的DFE创造一个可以正常工作的信号环境。,它通过将输入信号在不同时间点上的多个副本(称为“抽头”)进行加权求和,来直接塑造或“整形”输出信号的波形。:这是最主要的信号路径,通常系数为正值,决定了信号的幅度。:将所有加权后的信号相加,产生最终的均衡输出。

那么菜的博客 757

OpenCASCADE:Direct3D CSharp 示例

OpenCASCADE:Direct3D CSharp 示例OpenCASCADE:Direct3D CSharp 示例 OpenCASCADE:Direct3D CSharp 示例 此示例演示了如何在使用CSharp和Windows Presentation Foundation (WPF)编写的.Net应用程序中使用 OCCT 和 DirectX 库。 .Net、OCCT (C++) 和 DirectX 级别之间的连接由用 C++/CLI 编写的代理库OCCProxy和D3DProxy提供。代理库OCC

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1828

前端CLI脚手架思路解析

为什么要自己搞脚手架在实际的开发过程中,我们经常用别人开发的脚手架,以节约搭建项目的时间。但是,当npm没有自己中意的脚手架时,我们不得不自己动手,此时学会开发前端CLI脚手架的技能就显得...

前端开发博客 2099

不提交也不释放的事务,数据库连接还有可能被复用

摘要 实验发现Spring事务管理下,未提交事务的数据库连接池连接仍可被复用,这与传统认知相悖。通过配置HikariCP连接池(最大2连接)并设计测试接口,观察到未提交事务的连接会被后续请求复用。这可能导致GTID错误(当MySQL开启GTID且混用事务/非事务表时)以及数据修改丢失问题。研究揭示了Spring事务管理机制与连接池交互的特殊行为,对高并发系统设计具有重要启示。

蔡定努 179

手写前端脚手架cli

本文介绍了使用NPM创建Strapi项目的基本流程。内容包括:通过npx命令创建项目(支持最新版本和指定版本)、管理员登录、汉化设置(重命名配置文件)、数据表创建、字段定义、数据编辑以及数据库查看。还演示了如何开放API接口权限、使用Apifox测试接口(包括populate查询媒体数据)以及关系字段的设置方法。文章提供了详细的操作步骤和界面截图,适合Strapi初学者快速上手。

西洼工作室的博客 1354

ZooKeeper 实战:使用 Docker Compose 部署 ZooKeeper 集群

ZooKeeper是一个开源的分布式协调服务,用于管理大型分布式系统中的数据。它由Apache软件基金会提供,最初是Hadoop的一个子项目,但后来发展成为一个独立的顶级项目。ZooKeeper提供的一致性协调服务对于构建分布式应用和服务非常重要,特别是在需要精确的领导选举、配置管理、命名服务、分布式同步和提供分布式锁等功能时。

SmartSi 1544

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

前端 CLI 脚手架需要的一些工具

目前我用到就是这些, 后面准备再整理下怎么从0到1开发一个脚手架 Cli.我是一个默默无闻的搬砖人🧱。

weixin_37823106的博客 1033

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【纯干货】前端 CLI 脚手架思路解析

作者:左撇峰子,原文链接:https://juejin.im/post/6879265583205089287为什么要自己搞脚手架在实际的开发过程中,我们经常用别人开发的脚手架,以节约搭...

我本可以容忍阳光,如果我不曾见过太阳,然而阳光已使我荒凉,成为更新的荒凉。 403

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

如何搭建自己的前端脚手架——详细步骤和依赖解析

1. 简述 做为程序员,就是把复杂的事情简单化,越简单约好,越一键化越完美,开发实际业务时我们都需要先搭建一套运行环境,安装相关依赖,搭建相关的基础架构和封装一些方法以及构建项目等,不然每次都需要自己手动搭建,而且这个过程繁杂还重复,因此,最好是能够一键化搭建自己的开发环境,相信所有的开发人员都是这样,在前端而言,搭建脚手架CLI就是必经之路。讲讲搭建脚手架的好处: 一键化搭建项目结构 规范项目结构 封装最佳实践 因此,博主在这里详细的介绍如何搭建前端的脚手架。 2. 开始搭建 2.1 介绍必要依赖

我是张跑跑 3326

Node 实战: 从无到有创建一个自己专属的 CLI 脚手架

Node 实战: 从无到有创建一个自己专属的 CLI 脚手架 文章目录Node 实战: 从无到有创建一个自己专属的 CLI 脚手架前言正文1. 相关工具介绍1.1 chalk 彩色输出(各种输出样式附加)1.2 commander 启动参数解析1.3 clear 清屏1.4 figlet 文字图形生成1.5 inquirer 交互式提问(配置选项设置)1.6 ora 加载动画(转圈圈)2. 正式开始2.0 脚手架目标 & 主要实现步骤2.1 配置阶段:项目入口2.1.1 package.json 配

超悠閒的博客 514

前端CLI脚手架思路解析-从0到1搭建

作者:左撇峰子 链接:https://juejin.cn/post/6879265583205089287 来源:掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 为什么要自己搞脚手架 在实际的开发过程中,我们经常用别人开发的脚手架,以节约搭建项目的时间。但是,当npm没有自己中意的脚手架时,我们不得不自己动手,此时学会开发前端CLI脚手架的技能就显得非常重要。搭建一个符合大众化的脚手架能使自己在项目经验上加个分哦! 什么时候需要脚手架 其实很多时候从0开始搭建的项目都可以做.

qq_39075021的博客 590

前端 终端console.log() 不同颜色的输出工具chalk的介绍与使用 平替chalk的工具

前端 终端console.log() 不同颜色的输出工具chalk的介绍与使用 平替chalk的工具

fruge365的博客 1756

保姆级教程——逐步剖析前端脚手架工具cli的基本原理

前言 本文默认读者已安装了node,npm等工具,并了解其基本用法,涉及到此类内容将不会深入讲解,此类基础环境的安装过程将会略去 开篇 相信写过react和vue的小伙伴们都会用到create-react-app和vue-cli这类脚手架工具,那么有没有想过,这类工具是怎么做出来的呢?cli是command-line interface(命令行界面)的缩写,本篇文章的目标是通过动手写一个cli工具,来剖析vue-cli这类脚手架工具的基本原理 动手 首先我们新建一个test-cli文件夹,里面只有

小敏哥的专栏 1379

如何搭建一个前端脚手架

此时一个简单的脚手架已经完成,文件模板和cli命令根据实际需求自行配置扩展。

github_39506988的博客 2083

手把手教你搭建属于自己的前端脚手架工具

前面的话 以前使用vue-cli,vue init webpack project-name一行命令就可以初始化一个我们自己的项目,小柒觉得好神奇,之后研究啦一下vue-cli,其实就是一个高级版的克隆。然后就决定自己实现一套属于自己的脚手架(xq-cli),目前xq-cli脚手架已经实现了有一段时间了,决定拿出来分享。 xq-cli脚手架功能 创建项目 询问用户:询问用户新建项目的基本信息 下...

小柒的前端之旅 3265
上一篇: 前端架构: 实现脚手架终端UI样式之ANSI escape code, Chalk, Ora介绍
下一篇: 前端架构: 脚手架之使用Ora在终端中实现输出Loading
Wang's Blog
博客等级 码龄12年 7438粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值