@vivo-minigame/cli-shared-utils
Version:
shared utilities for minigame-cli packages
36 lines • 3.83 kB
JavaScript
;var _Object$defineProperty=require("@babel/runtime-corejs2/core-js/object/define-property"),_interopRequireDefault=require("@babel/runtime-corejs2/helpers/interopRequireDefault");_Object$defineProperty(exports,"__esModule",{value:!0}),exports.warn=exports.log=exports.info=exports.events=exports.error=exports.done=exports.colorconsole=exports.clearConsole=void 0;var _chalk=_interopRequireDefault(require("chalk")),_readline=_interopRequireDefault(require("readline")),_stringPrototype=_interopRequireDefault(require("string.prototype.padstart")),_events=_interopRequireDefault(require("events"));// import { Console } from 'console'
/**
* 带颜色的 info, log, warn, error, trace 的打印日志输出流
*/const colorconsole=exports.colorconsole={writable:null,init(writable){this.writable=writable}},events=exports.events=new _events.default;/**
* 日志操作,通过事件总线分发,目前未使用
* @param {String} type info|warn|error|done
* @param {String} tag 标签
* @param {String} message 要打印出来的消息
*/function _log(type,tag,message){message&&events.emit("log",{message,type,tag})}const format=(label,msg)=>msg.split("\n").map((line,i)=>0===i?`${label} ${line}`:(0,_stringPrototype.default)(line,_chalk.default.reset(label).length)).join("\n"),chalkTag=msg=>_chalk.default.bgBlackBright.white.dim(` ${msg} `),log=(msg="",tag=null)=>{tag?console.log(format(chalkTag(tag),msg)):console.log(msg),colorconsole.writable&&colorconsole.writable.write(msg),_log("log",tag,msg)};/**
* Tag标签,使用亮黑色背景,白色字
* @param {String`} msg Tag标签的格式
*//**
* 常规的log
* @param {String} msg 要打印的信息
* @param {String} tag 要打印信息的标签
*//**
* 常规的info。label为蓝色背景,黑色字体
* @param {String} msg 要打印的信息
* @param {String} tag 要打印信息的标签
*/exports.log=log;const info=(msg,tag=null)=>{console.log(format(_chalk.default.bgBlue.black(" INFO ")+(tag?chalkTag(tag):""),msg)),colorconsole.writable&&colorconsole.writable.write(`[INFO] ${msg}`),_log("info",tag,msg)};/**
* 常规的done。label为绿色背景,黑色字体
* @param {String} msg 要打印的信息
* @param {String} msg 要打印的信息
* @param {String} tag 要打印信息的标签
*/exports.info=info;const done=(msg,tag=null)=>{console.log(format(_chalk.default.bgGreen.black(" DONE ")+(tag?chalkTag(tag):""),msg)),colorconsole.writable&&colorconsole.writable.write(`[DONE] ${msg}`),_log("done",tag,msg)};/**
* 警告。label为黄色色背景,黑色字体 msg颜色为黄色
* @param {String} msg 要打印的信息
* @param {String} tag 要打印信息的标签
*/exports.done=done;const warn=(msg,tag=null)=>{console.warn(format(_chalk.default.bgYellow.black(" WARN ")+(tag?chalkTag(tag):""),_chalk.default.yellow(msg))),colorconsole.writable&&colorconsole.writable.write(`[WARN] ${msg}`),_log("warn",tag,msg)};/**
* 错误。label为红色背景,黑色字体 msg颜色为红色
* @param {String} msg 要打印的信息
* @param {String} tag 要打印信息的标签
*/exports.warn=warn;const error=(msg,tag=null)=>{console.error(format(_chalk.default.bgRed(" ERROR ")+(tag?chalkTag(tag):""),_chalk.default.red(msg))),colorconsole.writable&&colorconsole.writable.write(`[ERROR] ${msg}`),_log("error",tag,msg),msg instanceof Error&&_log("error",tag,msg.stack)};/**
* 清楚控制台的信息
* @param {String} title [可选] 清除控制台后的提示
*/exports.error=error;const clearConsole=title=>{if(process.stdout.isTTY){const blank="\n".repeat(process.stdout.rows);console.log(blank),_readline.default.cursorTo(process.stdout,0,0),_readline.default.clearScreenDown(process.stdout),title&&console.log(title)}};exports.clearConsole=clearConsole;