文章目录加载中
Node.js 交互式命令行-参数读取
这里用到的是 commander 这个库。它的文档地址是:https://www.npmjs.com/package/commander
请先看下面代码:
const program = require("commander");
// 分为2种操作, 2种操作互相冲突
// Options 操作
program
.version("0.0.1")
.option("-t, --types [type]", "test options")
// option这句话必须加
.parse(process.argv);
// Commands 操作
program
// 命令与参数: <> 必填; [] 选填
.command("exec <cmd> [env]")
// 别名
.alias("ex")
// 帮助信息
.description("execute the given remote cmd")
// 没用,option和command是冲突的
.option("-e, --exec_mode <mode>", "Which exec mode to use")
// 执行的操作
.action((cmd, env, options) => {
// 参数可以拿到
console.log(`env is ${env}`);
console.log('exec "%s" using %s mode', cmd, options.exec_mode);
})
// 自定义help信息
.on("--help", function() {
console.log("自定义help信息");
});
// 参数长度不够, 打印帮助信息
if (!process.argv.slice(2).length) {
program.outputHelp();
}
if (program.types) {
console.log(program.types);
}
// 解析命令行参数
program.parse(process.argv);
文档上基本都写明白了,但是有几个需要注意的点:
- 它主要提供 options 和 commands 两种操作,option 就是形如“-t,--types”这样的传参,commands 就是形如“exec”这样的传参。 不要混用两者 。
- 读取 commands 中传入的参数,写在
.action
中;读取 options 传入的参数,是通过访问program
上的变量。除此之外,options 操作需要执行 .parse(process.argv) 解析命令行参数 -V
和-h
默认也是提供的,但是也可以通过自定义覆盖- 一般都把 options 写在前面, 顺便标识版本号 ;把 commands 写在后面;最后会判断一下参数长度,不够会自动输出打印信息
本文来自心谭博客:xin-tan.com,经常更新web和算法的文章笔记,前往github查看目录归纳:github.com/dongyuanxin/blog
0