原生 node
- 用 process.argv 直接读取
- process.stdin.on 劫持输入
- readline 模块 进行逐行读取。该模块提供了一个接口,用于一次一行地读取可读流(例如
process.stdin
)中的数据1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22const app = require('./app')
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('请输入当前的年份和月份,然后按回车键。eg: 202010. ', (month) => {
rl.question('请输入本月小结会的月份和日期,然后按回车键。eg: 1130. ', (date) => {
console.log('数据统计中, 请勿触碰键盘...');
app(month, date);
// 一旦调用此代码,Node.js 应用程序将不会终止,直到 readline.Interface 关闭( rl.close() ),因为接口在 input 流上等待接收数据
// rl.close();
rl.on('close', () => { // close事件,ctrl + C 也会触发。详见 http://nodejs.cn/api/readline.html
console.log("Goodbye 👋");
// exit the process
process.exit(0);
});
})
借助 prompt 包
如果你 打算在Node.js中构建可靠的CLI工具,则 prompt 可能是一个很好的选择。比readline更好用。
能像处理页面表单一样处理命令行输入
1 | const prompt = require('prompt'); |
借助 Commander 包
这个感觉更像是封装命令行命令了,不仅仅是初始化时读取输入
代码:
1 | var program = require('commander'); |
执行:
1 | > node index --version 或 node index -V 能打印出我们定义的版本号 |