@irim/bin-tool
Version:
node bin tools
98 lines (97 loc) • 2.77 kB
JavaScript
// 控制台输入 inquirer.js 封装
// @author Pluto <huarse@gmail.com>
// @create 2020/05/14 10:58
import inquirer from 'inquirer';
import chalk from 'chalk';
/**
* node 控制台二次确认
* @param message 提示信息
* @param defaultValue 默认值
* @example
* const isUpdate = await confirm('请确认是否要升级?');
*/
export async function confirm(message, defaultValue = false) {
const result = await inquirer.prompt([{
type: 'confirm',
name: 'value',
message,
default: defaultValue || false,
}]);
return result.value;
}
/**
* node 控制台用户输入
* @param message 提示信息
* @param defaultValue 默认值
* @param required 是否必填
* @example
* const username = await prompt('请输入用户名:');
*/
export async function prompt(message, defaultValue, required = false) {
const result = await inquirer.prompt([{
type: 'input',
name: 'value',
message,
default: defaultValue,
}]);
if (!result.value && required) {
return await prompt(chalk.red(message), defaultValue, true);
}
return result.value;
}
/**
* node 控制台用户输入, alias for prompt
* @param message 提示信息
* @param defaultValue 默认值
* @param required 是否必填
* @example
* const username = await input('请输入用户名:');
*/
export const input = prompt;
/**
* node 控制台用户输入
* @param message 提示信息
* @param defaultValue 默认值
* @param required 是否必填
* @example
* const username = await password('请输入密码:');
*/
export async function password(message, defaultValue, required = false) {
const result = await inquirer.prompt([{
type: 'password',
name: 'value',
message,
default: defaultValue,
}]);
if (!result.value && required) {
return await prompt(chalk.red(message), defaultValue, true);
}
return result.value;
}
/**
* node 控制台用户选择
* @param message 提示信息
* @param options 选项
* @param defaultValue 默认值或默认的选项 index
* @example
* const value = await select('请选择性别: ', ['男', '女']);
*/
export async function select(message, options, defaultValue) {
const result = await inquirer.prompt([{
type: 'list',
name: 'value',
message,
choices: options,
default: defaultValue,
}]);
return result.value;
}
export async function holding(tips = '按回车继续...') {
await inquirer.prompt([{
type: 'input',
name: 'value',
message: tips,
prefix: '',
}]);
return true;
}