node js命令行交互

在使用npm init的时候,你可以根据提示输入信息,命令行会根据你输入的信息做进一步的信息反馈,这就是一个命令行交互的过程。这一小节,我们将介绍第三方模块co-prompt,它能轻松实现命令行交互程序的开发。

安装

co-prompt模块依赖于co模块,所以,两个模块我们都需要安装。这里只介绍本地安装

Tips :
co模块是非常有名的异步程序处理模块,这里不展开,建议自行学习。
学习co模块之前,需要先了解一下ES6的新特性Generator 函数

1
2
$ npm install co co-prompt --save

co-prompt的使用

引用

1
2
3
var co = require('co');
var prompt = require('co-prompt');

API

普通文本提示

  • prompt(msg)
    • msg <String>:提示用户信息的具体内容

例子:

密码文本提示,密码非明文显示

  • prompt.password(msg, [mask])

    • msg <String>:提示用户信息的具体内容
    • mask <String>:输入密码时的显示替换字符,默认是”*”

多行文本提示

  • prompt.multiline(msg)
    • msg <String>:提示用户信息的具体内容

确认提示信息

  • prompt.confirm(msg)
    • msg <String>:提示用户信息的具体内容
    • 返回值 <Bool>:true|false

Tips:
confirm()方法只有在用户输入[y|yes|ok|true]这4个值(不区分大小写)时,才返回true,其他情况都是false,所以,你的确认提示信息必须引导用户输入合适的值或者你程序的业务逻辑需要做必要调整

综合例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var co = require('co');
var prompt = require('co-prompt');

co(function*() {
var username = yield prompt('username: ');
var pwd = yield prompt.password('password: ');
var desc = yield prompt.multiline('description:');
var ok = yield prompt.confirm('are you sure?(yes|no)');
console.log('hello %s %s\n', username, pwd);
console.log('you describe yourself as:\n' + desc);
console.log('answer: %s', ok);
process.exit();
});

co和co-prompt API地址:

co 官网地址:https://www.npmjs.com/package/co

co-prompt 官网地址:https://www.npmjs.com/package/co-prompt