# Node Cli
# 命令行参数
注入参数
node text.js args1
1
使用 process.argv
获取参数
[
'/Users/tianqiang/.nvm/versions/node/v10.20.1/bin/node',
'/Users/tianqiang/瞎折腾/study/index.js',
'args'
]
1
2
3
4
5
2
3
4
5
process.argv
返回的是数组
# commander
commander
命令行参数处理
const program = require('commander')
program
.name('pkg-name') // cli 的名称
.version('0.0.1') // 版本
.option('-v,--verbose','verposity that can be increased') // -v 简写 --verbose全称 后面是描述
// 给program添加子命令,可以用command这个方法
program
.command('clone <source> [destination]') // clone 是子命令,source是必填参数,destination 是选填参数
.option('-d,--depths <level>','git clone depths')
.description('cloe a repository into a newly created directory')
.action((source,destination,cmdObj)=>{ // cmdObj存放所有option的键值对
console.log(`start cloning from ${source} to ${destination} with depth ${cmdObj.depths}`);
})
program.parse(process.argv) // 从process.argv中取得命令行参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# inquirer.js
命令行交互工具
const inquirer = require('inquirer')
inquirer
.prompt([
{
type: 'input',
name: 'username',
message: '请输入你的姓名'
}
])
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# chalk
chalk
控制终端文案输出颜色
const chalk = require('chalk')
console.log(chalk.red('hello world!!!'))
1
2
3
2
3