web前端开发Web 前端开发 前端开发

NodeJs交互式命令行工具Inquirer.js-开箱指南

2017-06-07  本文已影响0人  SherHoooo

Inquirer.js试图为NodeJs做一个可嵌入式的美观的命令行界面。如下图:


它是非常容易去处理以下几种事情的:

note: Inquirer.js仅仅给用户提供了一个漂亮的界面和提出问题流的方式。假如说你正在寻找的是完全成熟的命令行调试程序,那么我推荐你去看看commandervorpalargs

安装

npm install inquirer

编写一个小demo——index.js

var inquirer = require('inquirer')
inquirer.prompt([ { 
  type: 'confirm', 
  name: 'test', 
  message: 'Are you handsome?', 
  default: true 
}]).then((answers) => { console.log('结果为:') console.log(answers)})

运行一波

node index.js

输出

结果为:{ test: false}

从这个小demo可以看出来,通过Inquirer的prompt方法就可以在命令行中对用户提出问题。

Questions —— 问题

问题的标题和默认结果值都是可以预设的。而在回答完成后会返回一个Promise对象,在其then方法中可以获取到用户输入的所有回答。其中传递给prompt方法的参数为一个question问题数组,数组中的每个元素都是一个问题对象。其包含的属性共有以下几种:

{ 
  type: String, // 表示提问的类型,下文会单独解释 name: String, // 在最后获取到的answers回答对象中,作为当前这个问题的键
  message: String|Function, // 打印出来的问题标题,如果为函数的话 
  default: String|Number|Array|Function, // 用户不输入回答时,问题的默认值。或者使用函数来return一个默认值。假如为函数时,函数第一个参数为当前问题的输入答案。 
  choices: Array|Function, // 给出一个选择的列表,假如是一个函数的话,第一个参数为当前问题的输入答案。为数组时,数组的每个元素可以为基本类型中的值。 
  validate: Function, // 接受用户输入,并且当值合法时,函数返回true。当函数返回false时,一个默认的错误信息会被提供给用户。 
  filter: Function, // 接受用户输入并且将值转化后返回填充入最后的answers对象内。 
  when: Function|Boolean, // 接受当前用户输入的answers对象,并且通过返回true或者false来决定是否当前的问题应该去问。也可以是简单类型的值。 
  pageSize: Number, // 改变渲染list,rawlist,expand或者checkbox时的行数的长度。}

其中,default, choices, validate, filter, when等函数都能被异步调用。同时返回一个promise或者通过使用this.async()函数来进行回调获取最终值。

{ 
  /* 首选使用 promise */ 
  filter: function () { return new Promise(/* etc... */); }, 

 /* 也可以使用 this.async */ 
 validate: function (input) { 
  // Declare function as asynchronous, and save the done callback  
  var done = this.async();  // 进行异步操作 
  setTimeout(function () { 
    if (typeof input !== 'number') { // Pass the return value in the done callback  
    done('You need to provide a number');
    return; 
  } // Pass the return value in the done callback  
  done(null, true); }, 3000); 
}}

Answers —— 回答

Answers是一个包含有用户客户端输入的每一个问题的答案的对象键:问题对象的name属性值:取决于问题的类型,confirm类型为Boolean,Input类型为用户输入的字符串,rawlist和list类型为选中的值,也为字符串类型。

Separator —— 分隔

可以为任意的choices数组选项添加分隔,方便在多选项时划分选项类别

Prompt types —— 问题类型

支持

下列所有CLI都有非常良好的支持程度。

上一篇 下一篇

猜你喜欢

热点阅读