Inquirer.js学习与实践

一 简介

1用途

A collection of common interactive command line user interfaces.

在开发过程中,需要频繁的跟命令行进行交互,借助inquirer模块就能轻松实现,它提供了用户界面和查询会话流程。

2优缺点及对比

二 基本概念与技术重点整理

inquirer功能简介

input–输入 validate–验证 list–列表选项 confirm–提示 checkbox–复选框等

语法

var inquirer = require('inquirer')
inquirer.prompt([/* Pass your questions in here */]).then(function (answers) {
    // Use user feedback for... whatever!! 
})

三 使用实践及案例

初始化项目后安装inquirer

cnpm install inquirer --save

一个简单的inquirer例子

可执行命令act文件代码:

#! /usr/bin/env node
const program = require('commander')
const inquirer = require('inquirer')
const chalk = require('chalk')

program
  .command('module')
  .alias('m')
  .description('创建新的模块')
  .option('-a, --name [moduleName]', '模块名称')
  .option('--sass', '启用sass')
  .option('--less', '启用less')
  .action(option => {
          var config = Object.assign({
              moduleName: null,
              description: '',
              sass: false,
              less: false
          }, option)
          var promps = []
          if(config.moduleName !== 'string') {
                promps.push({
                  type: 'input',
                  name: 'moduleName',
                  message: '请输入模块名称',
                  validate: function (input){
                      if(!input) {
                          return '不能为空'
                      }
                      return true
                  }
                })
          }
          if(config.description !== 'string') {
              promps.push({
                  type: 'input',
                  name: 'moduleDescription',
                  message: '请输入模块描述'
              })
          }
          if(config.sass === false && config.less === false) {
            promps.push({
              type: 'list',
              name: 'cssPretreatment',
              message: '想用什么css预处理器呢',
              choices: [
                {
                  name: 'Sass/Compass',
                  value: 'sass'
                },
                {
                  name: 'Less',
                  value: 'less'
                }
              ]
            })
          }
          inquirer.prompt(promps).then(function (answers) {
              console.log(answers)
          })
      })
      .on('--help', function() {
          console.log('  Examples:')
          console.log('')
          console.log('$ app module moduleName')
          console.log('$ app m moduleName')
      })

program.parse(process.argv)

这里加了

inquirer.prompt(promps).then(function (answers) {
              console.log(answers)
          })

接受到从用户输入或选择拿到的数据后,输出了结果。

执行命令:

选择完后:

四 资源与参考

1官网

2文档

https://github.com/SBoudrias/Inquirer.js/#documentation

3源码

https://github.com/SBoudrias/Inquirer.js/

4教程

官方教程:

其他教程: 跟着老司机玩转Node命令行 https://aotu.io/notes/2016/08/09/command-line-development/index.html

5工具与资源

results matching ""

    No results matching ""