控制台打印table表【js版本】

1,105 阅读2分钟

背景

最近在做项目分析时候,需要在控制台,需要将分析的结果数据打印table表显示,直接使用console.table,简直太糟糕了

1.不支持自动换行,只支持单行打印,如果过长导致table表错位
2.不支持识别\n标识,也是想自定义换行,都行不通
3.对中文太不友好了,只要有中文,就会导致table错位
4.table表的title不能自定义
5.table表自带索引,从0开始,不支持自定义或修改

需求

1.自定义title
2.能根据最大字数实现自动换行
3.能识别\n实现自动换行
4.能隐藏title
5.对中文显示友好


糟糕的效果图如下

image.png

使用 @xdooi/consoletable 包打印的table表效果图如下

image.png

@xdooi/consoletable 使用方法如下

安装依赖包

npm install --save @xdooi/consoletable

打印表格

// 基础用法:值中有 【\n】 时候,会换行显示
const consoletable = require('@xdooi/consoletable')    

consoletable.drawTable([{
    title:'consoleTable',
    createTime:'2022-01-01',
    author:'xdooi',
    version:'v1.0.1',
    desc:'新版本'
},{
    title:'consoleTable',
    createTime:'2022-01-02',
    author:'xdooi',
    version:'v1.0.2',
    desc:'更新'
},
['consoleTable','2022-01-01','xdooi','v1.0.3','优化\n升级\n新功能']])

// 更多用法:使用自定义title,使用数据第一组的值设置为表格标题
const consoletable = require('consoletable')    

const options = {head: 'def' }

consoletable.drawTable([{
    title:'标题',
    createTime:'时间',
    author:'作者',
    version:'版本',
    desc:'描述'
},
{
    title:'consoleTable',
    createTime:'2022-01-01',
    author:'xdooi',
    version:'v1.0.1',
    desc:'新版本,使用自定义头部'
},{
    title:'consoleTable',
    createTime:'2022-01-02',
    author:'xdooi',
    version:'v1.0.2',
    desc:'更新'
},
['consoleTable','2022-01-01','xdooi','v1.0.3','优化\n升级\n新功能']], options)

// 更多用法:隐藏表格 头部
const consoletable = require('consoletable')    

const options = { head: false }

consoletable.drawTable([{
    title:'标题',
    createTime:'时间',
    author:'作者',
    version:'版本',
    desc:'隐藏头部,仅显示表格内容'
},{
    title:'consoleTable',
    createTime:'2022-01-01',
    author:'xdooi',
    version:'v1.0.3',
    desc:'新版本,我的自动换行功能,当满足max值的之后自动换行'
}], options)

// 更多用法:设置最大字数,超过后会自动换行
const consoletable = require('consoletable')    

const options = { max: 20 }

consoletable.drawTable([{
    title:'consoleTable',
    createTime:'2022-01-01',
    author:'xdooi',
    version:'v1.0.4',
    desc:'新版本,我的自动换行功能,当满足max值的之后自动换行'
}], options)