## 命令行交互
在使用`npm init`的时候,你可以根据提示输入信息,命令行会根据你输入的信息做进一步的信息反馈,这就是一个命令行交互的过程。这一小节,我们将介绍第三方模块`co-prompt`,它能轻松实现命令行交互程序的开发。
[TOC]
### 安装
`co-prompt`模块依赖于`co`模块,所以,两个模块我们都需要安装。这里只介绍本地安装
>Tips :
`co`模块是非常有名的异步程序处理模块,这里不展开,建议自行学习。
学习`co`模块之前,需要先了解一下`ES6`的新特性[Generator 函数](http://es6.ruanyifeng.com/#docs/generator)
~~~
$ npm install co co-prompt --save
~~~
### co-prompt的使用
#### 引用
~~~
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`,所以,你的确认提示信息必须引导用户输入合适的值或者你程序的业务逻辑需要做必要调整
#### 综合例子
~~~
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 <br/>**
**co-prompt 官网地址:https://www.npmjs.com/package/co-prompt <br/>**