文本 (text)
text (message, [initial], [style])
用于让用户随意输入文字内容
用户按下tab键会自动输入设置好的initial
值。
示例:
{
type: 'text',
name: 'value',
message: `What's your twitter handle?`
}
2
3
4
5
参数 | 类型 | 描述 |
---|---|---|
message | String | 问题的内容 |
initial | String | 默认字符串值 |
style | String | 渲染样式(default , password , invisible , emoje )。默认是default |
format | Function | 接收用户的输入。返回值会放入答案对象中 |
validate | Function | 接收用户的输入。如果符合验证则返回true ,否则返回一个错误信息String 。如果返回的是false ,那么会返回一个默认的错误信息 |
onRender | Function | 渲染时的回调。其中的this 指向当前问题 |
onState | Function | 状态改变时的回调。它的参数是一个拥有两个属性的对象 : value 和aborted |
密码 (password)
password(message, [initial])
密码形式的输入项,用以遮蔽用户的输入
设置参数和text
相类似,也可以为password
设置style
示例:
参数 | 类型 | 描述 |
---|---|---|
message | String | 问题的内容 |
initial | String | 默认字符串值 |
format | Function | 接收用户的输入。返回值会放入答案对象中 |
validate | Function | 接收用户的输入。如果符合验证则返回true ,否则返回一个错误信息String 。如果返回的是false ,那么会返回一个默认的错误信息 |
onRender | Function | 渲染时的回调。其中的this 指向当前问题 |
onState | Function | 状态改变时的回调。它的参数是一个拥有两个属性的对象 : value 和aborted |
隐藏 (invisible)
invisible(message, [initial])
隐藏用户的输入内容
和sudo
类似,用户的输入内容是不可见的。它和样式设置为invisible
的text
类型有异曲同工之妙。
示例:
{
type: 'invisible',
name: 'value',
message: 'Enter password'
}
2
3
4
5
参数 | 类型 | 描述 |
---|---|---|
message | String | 问题的内容 |
initial | String | 默认字符串值 |
format | Function | 接收用户的输入。返回值会放入答案对象中 |
validate | Function | 接收用户的输入。如果符合验证则返回true ,否则返回一个错误信息String 。如果返回的是false ,那么会返回一个默认的错误信息 |
onRender | Function | 渲染时的回调。其中的this 指向当前问题 |
onState | Function | 状态改变时的回调。它的参数是一个拥有两个属性的对象 : value 和aborted |
数字 (number)
number(message, initial, [max], [min], [style])
用于让用户输入数字
您可以输入数字并使用↑↓键来增/减值。只接受数字类型的输入。用户按下tab键会自动输入设置好的initial
值。
示例:
{
type: 'number',
name: 'value',
message: 'How old are you?',
initial: 0,
style: 'default',
min: 2,
max: 10
}
2
3
4
5
6
7
8
9
参数 | 类型 | 描述 |
---|---|---|
message | String | 问题的内容 |
initial | Number | 默认数字值 |
format | Function | 接收用户的输入。返回值会放入答案对象中 |
validate | Function | 接收用户的输入。如果符合验证则返回true ,否则返回一个错误信息String 。如果返回的是false ,那么会返回一个默认的错误信息 |
max | Number | 最大值。默认是Infinity |
min | Number | 最小值。默认是-Infinity |
float | Boolean | 是否允许输入浮点数,默认是false |
round | Number | 将浮点数四舍五入到几位小数。默认是2 |
increment | Number | 使用↑↓键来增/减值的步幅。默认是1 |
style | String | 渲染样式(default , password , invisible , emoje )。默认是default |
onRender | Function | 渲染时的回调。其中的this 指向当前问题 |
onState | Function | 状态改变时的回调。它的参数是一个拥有两个属性的对象 : value 和aborted |
是非 (confirm)
confirm(message, [initial])
经典的是/否问题
键入 y/n 来回答yes/no
示例:
{
type: 'confirm',
name: 'value',
message: 'Can you confirm?',
initial: true
}
2
3
4
5
6
参数 | 类型 | 描述 |
---|---|---|
message | String | 问题的内容 |
initial | Boolean | 默认值。默认为false |
format | Function | 接收用户的输入。返回值会放入答案对象中 |
onRender | Function | 渲染时的回调。其中的this 指向当前问题 |
onState | Function | 状态改变时的回调。它的参数是一个拥有两个属性的对象 : value 和aborted |
清单 (list)
list(message, [initial])
返回值为数组的问题列表
和text
类型相似,返回值是由分隔符(seprartor)
分割的字符串组成的数组。
示例:
{
type: 'list',
name: 'value',
message: 'Enter keywords',
initial: '',
separator: ','
}
2
3
4
5
6
7
参数 | 类型 | 描述 |
---|---|---|
message | String | 问题的内容 |
initial | Boolean | 默认值 |
format | Function | 接收用户的输入。返回值会放入答案对象中 |
seprartor | String | 字符串分隔符。默认是, 。会自动trim 掉前后的空格 |
onRender | Function | 渲染时的回调。其中的this 指向当前问题 |
onState | Function | 状态改变时的回调。它的参数是一个拥有两个属性的对象 : value 和aborted |
切换 (toggle)
toggle(message, [initial], [active], [inactive])
交互式的开关/切换问题
使用 箭头 tab 空格 来切换各个选项。
示例
{
type: 'toggle',
name: 'value',
message: 'Can you confirm?',
initial: true,
active: 'yes',
inactive: 'no'
}
2
3
4
5
6
7
8
参数 | 类型 | 描述 |
---|---|---|
message | String | 问题的内容 |
initial | Boolean | 默认值,默认为false |
format | Function | 接收用户的输入。返回值会放入答案对象中 |
active | String | 激活(active) 状态的说明文字。默认是on |
inactive | String | 未激活(inactive) 状态的说明文字。默认是off |
onRender | Function | 渲染时的回调。其中的this 指向当前问题 |
onState | Function | 状态改变时的回调。它的参数是一个拥有两个属性的对象 : value 和aborted |
选择 (select)
select(message, choices, [initial], [hint], [warn])
交互式选择问题
示例:
{
type: 'select',
name: 'value',
message: 'Pick a color',
choices: [
{ title: 'Red', description: 'This option has a description', value: '#ff0000' },
{ title: 'Green', value: '#00ff00', disabled: true },
{ title: 'Blue', value: '#0000ff' }
],
initial: 1
}
2
3
4
5
6
7
8
9
10
11
参数 | 类型 | 描述 |
---|---|---|
message | String | 问题的内容 |
initial | Number | 默认值的索引 |
format | Function | 接收用户的输入。返回值会放入答案对象中 |
hint | String | 展示给用户的提示 |
warn | String | 当用户选则了一个不可用(disable) 的选项时弹出的警告信息 |
choices | Array | 字符串或选项对象的数组[{ title, description, value, disabled }, ...] 。如果没有指定value , 那么将使用其索引值 |
onRender | Function | 渲染时的回调。其中的this 指向当前问题 |
onState | Function | 状态改变时的回调。它的参数是一个拥有两个属性的对象 : value 和aborted |
多选 (multiselect)
multiselect(message, choices, [initial], [max], [hint], [warn])
autocompleteMultiselect(same)
交互式多选问题
autocomplete 是一个可搜索的多选问题,配置项相同。常用于长列表。
用 空格 键(也可以使用←和→)来切换选择/取消状态,用 ↑↓ 切换问题。 用 tab 来循环列表。默认返回一个包含所选项value
而非title
的数组。
{
type: 'multiselect',
name: 'value',
message: 'Pick colors',
choices: [
{ title: 'Red', value: '#ff0000' },
{ title: 'Green', value: '#00ff00', disabled: true },
{ title: 'Blue', value: '#0000ff', selected: true }
],
max: 2,
hint: '- Space to select. Return to submit'
}
2
3
4
5
6
7
8
9
10
11
12
参数 | 类型 | 描述 |
---|---|---|
message | String | 问题的内容 |
format | Function | 接收用户的输入。返回值会放入答案对象中 |
instructions | String | Boolean | 说明 |
choices | Array | 字符串或选项对象的数组[{ title, value, disabled }, ...] 。如果没有指定value , 那么将使用其索引值 |
optionsPerPage | Number | 每一页所显示的选项数,默认是10 |
min | Number | 最少选择数。传入负数会报错 |
max | Number | 最多选择数 |
hint | String | 展示给用户的提示 |
warn | String | 当用户选则了一个不可用(disable) 的选项时弹出的警告信息 |
onRender | Function | 渲染时的回调。其中的this 指向当前问题 |
onState | Function | 状态改变时的回调。它的参数是一个拥有两个属性的对象 : value 和aborted |
这是为数不多的不需要设置initial
值的问题类型。如果您想要预设一些选项,请传入把choices
中的对象设置一个selected: true
自动填充 (autoComplete)
autocomplete(message, choices, [initial], [suggest], [limit], [style])
交互式自动填充答案
这种类型会基于用户的输入来显示选项。再根据输入进一步过滤。 通过 ↑↓ 切换问题。 用 tab 来循环列表。 通过 Page Up/Page Down (Mac上则是 fn + ↑/↓) 来翻页。 按下 回车 选择处于高亮状态的项目。
默认的suggest
函数是基于选项的title
属性来排序的。您可以传入自定义的suggest
方法来更改选项的顺序。
示例:
{
type: 'autocomplete',
name: 'value',
message: 'Pick your favorite actor',
choices: [
{ title: 'Cage' },
{ title: 'Clooney', value: 'silver-fox' },
{ title: 'Gyllenhaal' },
{ title: 'Gibson' },
{ title: 'Grant' }
]
}
2
3
4
5
6
7
8
9
10
11
12
参数 | 类型 | 描述 |
---|---|---|
message | String | 提问的信息 |
format | Function | 接收用户的输入值。返回值会放入答案对象中 |
choices | Array | 自动填充的选项的数组[{title, value}], ... |
suggest | function | 过滤器方法。默认是按title 属性排列。 suggest 应该返回一个promise。它以title 作为默认参数。 |
limit | Number | 显示结果的最大数量。默认是10 |
initial | String | Number | 默认值 |
style | String | 渲染样式(default , password , invisible , emoje )。默认是default |
fallback | String | 没有匹配到任何项的回退信息。如果提供了initial 值则默认使用它 |
onRender | Function | 渲染时的回调。其中的this 指向当前问题 |
onState | Function | 状态改变时的回调。它的参数是一个拥有两个属性的对象 : value 和aborted |
suggest
方法的示例:
const suggestByTitle = (input, choices) => Promise.resolve(choices.filter(i => i.title.slice(0, input.length) === input))
日期 (data)
date(message, [initial], [warn])
交互式日期问答
使用 →/→/tab 切换变更项。使用 ↑/↓ 来更改日期。
示例:
{
type: 'date',
name: 'value',
message: 'Pick a date',
initial: new Date(1997, 09, 12),
validate: date => date > Date.now() ? 'Not in the future' : true
}
2
3
4
5
6
7
参数 | 类型 | 描述 |
---|---|---|
message | String | 提问的信息 |
initial | Date | 默认日期 |
locales | Object | 用于定义本地化设置。示例见后文 |
mask | String | 日期格式化字符串蒙板。更多信息见后文 |
validate | Function | 接收用户的输入。如果符合验证则返回true ,否则返回一个错误信息String 。如果返回的是false ,那么会返回一个默认的错误信息 |
onRender | Function | 渲染时的回调。其中的this 指向当前问题 |
onState | Function | 状态改变时的回调。它的参数是一个拥有两个属性的对象 : value 和aborted |
默认本地化(locales)设置:
{
months: [
'January', 'February', 'March', 'April',
'May', 'June', 'July', 'August',
'September', 'October', 'November', 'December'
],
monthsShort: [
'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
],
weekdays: [
'Sunday', 'Monday', 'Tuesday', 'Wednesday',
'Thursday', 'Friday', 'Saturday'
],
weekdaysShort: [
'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
格式 | 输出 |
月份 (Month) | |
M | 1 2 ... 11 12 |
MM | 01 02 ... 11 12 |
MMM | Jan Feb ... Nov Dec |
MMMM | January February ... Nobermber December |
日期 (Day of Month) | |
D | 1 2 ... 30 31 |
Do | 1st 2nd ... 30th 31st |
DD | 01 02 ... 30 31 |
星期 (Day of Week) | |
d | 0 1 ... 5 6 |
ddd | Sun Mon ... Fri Sat |
dddd | Sunday Monday ... Friday Saturday |
年份 (Year) | |
YY | 70 71 ... 29 30 |
YYYY | 1970 1971 ... 2029 2030 |
上/下午 (AM/PM) | |
A | AM PM |
a | am pm |
时 (Hour) | |
H | 0 1 ... 22 23 |
HH | 00 01 ... 22 23 |
h | 1 2 ... 11 12 |
hh | 01 02 ... 11 12 |
分 (Minute) | |
m | 0 1 ... 58 59 |
mm | 00 01 ... 58 59 |
秒 (Second) | |
s | 0 1 ... 58 59 |
ss | 00 01 ... 58 59 |
毫秒 (Fractional Second) | |
S | 0 1 ... 8 9 |
SS | 0 1 ... 98 99 |
SSS | 0 1 ... 998 999 |
SSSS | 0 1 ... 9998 9999 |