cliui
轻松创建复杂的多列命令行界面。
例子
npm i cliui@latest chalk@latest
const ui = require('cliui')()
const {Chalk} = require('chalk');
const chalk = new Chalk();
ui.div('Usage: $0 [command] [options]')
ui.div({
text: 'Options:',
padding: [2, 0, 1, 0]
})
ui.div(
{
text: "-f, --file",
width: 20,
padding: [0, 4, 0, 4]
},
{
text: "the file to load." +
chalk.green("(if this description is long it wraps).")
,
width: 20
},
{
text: chalk.red("[required]"),
align: 'right'
}
)
console.log(ui.toString())
Deno / ESM支持
import cliui from "cliui";
import chalk from "chalk";
// Deno: import cliui from "https://deno.land/x/cliui/deno.ts";
const ui = cliui({})
ui.div('Usage: $0 [command] [options]')
ui.div({
text: 'Options:',
padding: [2, 0, 1, 0]
})
ui.div(
{
text: "-f, --file",
width: 20,
padding: [0, 4, 0, 4]
},
{
text: "the file to load." +
chalk.green("(if this description is long it wraps).")
,
width: 20
},
{
text: chalk.red("[required]"),
align: 'right'
}
)
console.log(ui.toString())
布局DSL
cliui公开了一个简单的布局DSL:
如果你创建一个 ui.div,传递一个字符串而不是一个
对象:
\n:字符将被解释为新的行。\t:字符将被解释为新的列。\s:字符将被解释为填充。
举个例子……
var ui = require('./')({
width: 60
})
ui.div(
'Usage: node ./bin/foo.js\n' +
' <regex>\t provide a regex\n' +
' <glob>\t provide a glob\t [required]'
)
console.log(ui.toString())
将输出:
Usage: node ./bin/foo.js
<regex> provide a regex
<glob> provide a glob [required]
方法
cliui = require('cliui')
cliui({宽度:整数})
指定正在生成的UI的最大宽度。
如果没有提供宽度,cliui将尝试获取当前窗口的宽度并使用它,如果不工作,width将被设置为 80。
cliui({包装:布尔})
启用或禁用列中的文本换行。
cliui。Div(列,列,列)
创建具有任意数量列的行,即列 可以是一个字符串,也可以是一个具有以下属性的对象 选项:
- 文本: 要放置在列中的一些文本。
- 宽度: 列的宽度
- 对齐: 对齐,
right或center。 - 填充:
[top, right, bottom, left]。 - 边界: 是否应该在div周围放置边框?
cliui。Span(列,列,列)
类似于 div,除了下一行将追加没有
一条新的线路正在创建中。
cliui.resetOutput ()
重置当前cliui实例的UI元素,保持其值
设置 width 和 wrap。