TypeScript中如何在program.option中输出红色左中括号'['?
问题:如何在commander.js的
program.option中给选项的'['添加红色样式? 你尝试在program.option的选项定义中插入ANSI颜色代码给'['添加红色,但因为commander.js会将选项定义中的[识别为可选参数的语法标识,导致和颜色代码\x1b[里的[冲突,解析失败。
解决方案
方法一:自定义Help输出(推荐)
通过configureOutput方法自定义帮助文本的显示逻辑,在输出时给[和]添加红色样式,完全不影响选项的正常解析:
const { program } = require('commander'); // 正常定义选项,不带颜色代码 program .option('--bcc [string]', 'bcc email address.'); // 配置输出,替换帮助文本中的[]为红色 program.configureOutput({ outputHelp: (helpText) => { // 将所有[和]替换为红色样式 return helpText.replace(/([\[\]])/g, '\x1b[31m$1\x1b[0m'); } }); program.parse(process.argv);
方法二:调整颜色代码的位置
如果一定要在选项定义中直接添加颜色,需确保颜色代码不破坏commander的参数解析语法,将颜色代码仅包裹[和]:
const { program } = require('commander'); program .option(`--bcc \x1b[31m[\x1b[0mstring\x1b[31m]\x1b[0m`, 'bcc email address.'); program.parse(process.argv);
两种方法都能实现让选项中的括号显示为红色的效果,同时保证程序正常运行。
内容的提问来源于stack exchange,提问作者Brian-Hsu
相关产品推荐
相关产品推荐

