Commander.js-demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/usr/bin/env node
const commander = require('commander');
const inquirer = require('inquirer');
const ora = require('ora');
const chalk = require('chalk');
const symbols = require('log-symbols');
const packageJson = require('./package.json');
const spinner = ora('正在下载模板...');
// 命令
const program = new commander.Command(packageJson.name)
.version(packageJson.version)
.arguments('<name>')
.action((name) => {
// 问题
inquirer
.prompt([
{
type: 'input',
name: 'description',
message: '请输入项目描述',
},
{
type: 'input',
name: 'author',
message: '请输入作者名称',
},
])
.then((answers) => {
// 显示下载中
spinner.start();
setTimeout(() => {
spinner.succeed();
console.log(symbols.success, name + '下载完成');
console.log('问题答案:', symbols.info, answers);
console.log('--verbose 参数:', program.verbose);
console.log('--info 参数:', program.info);
console.log('--use-npm 参数', program.useNpm);
}, 5000);
});
})
.option('--verbose', 'print additional logs')
.option('--info', 'print environment debug info')
.option('--use-npm')
.allowUnknownOption()
.usage(`${chalk.green('<name>')} [options]`)
.on('--help', () => {
console.log(
` If you have any problems, do not hesitate to file an issue.`
);
})
.parse(process.argv);