您现在的位置是:首页 > 编程 > 

ode 命令行工具 commander.js 快速上手

2025-07-26 14:34:58
ode 命令行工具 commander.js 快速上手 完整的 node.js 命令行解决方案。tj/commander.js: node.js command-line interfaces made easy中文文档1 只使用 option这个是最简单和好理解的,直接使用看官方的例子即可:commander.js/opti-common.js at master · tj/comman

ode 命令行工具 commander.js 快速上手

完整的 node.js 命令行解决方案。

tj/commander.js: node.js command-line interfaces made easy

中文文档

1 只使用 option

这个是最简单和好理解的,直接使用看官方的例子即可:

commander.js/opti-common.js at master · tj/commander.js

代码语言:javascript代码运行次数:0运行复制
program  .option('-d, --debug', 'output extra debugging')  .option('-s, --small', 'small pizza size')  .option('-p, --pizza-type <type>', 'flavour of pizza');

如果没有指定参数,则 option 默认是 boolean 类型,默认为 undefined,指定了就是 true。

以下演示中,默认使用如下代码模板,并且主命令假设为 foo

代码语言:javascript代码运行次数:0运行复制
ct { Command } = require("commander");ct program = new Command();
// code,这里是不同的演示代码
program.parse();
2 使用 argument

这里是命令的参数,调用形式上和 command 有点像,但是不同的东西。

代码语言:javascript代码运行次数:0运行复制
program  .version("0.1.0")  .argument("<username>", "user to login")  .argument("[password]", "password for user, if required", "no password given")  .description("example program for argument")  .action((username, password) => {    cole.log("username:", username);    cole.log("password:", password);  });
program  .version("0.1.0")  .arguments("<username> [password]")  .description("test command")  .action((username, password) => {    cole.log("username:", username);    cole.log("password:", password || "no password given");  });

调用形式就是 foo my-name my-password

argument 和 option代码语言:javascript代码运行次数:0运行复制
program  .version("0.1.0")  .argument("<username>", "user to login")  .argument("[password]", "password for user, if required", "no password given")  .option("-c, --check", "check option")  .option("-C, --no-check", "no check option")  .option("-o, --output <output>", "output opti", "./temp")  .description("example program for argument")  .action((username, password, opti) => {    cole.log("username:", username);    cole.log("password:", password);    cole.log(opti);  });

调用形式就是 foo my-name my-password -C -o “/temp”

这里使用了取反 option --no-check,当指定 -C 或者 --no-check 时,option 中的 check 为 false。(没有名为 no-check 的选项,控制的都是 check 选项的值)

即:check 选项一共有三种值,不指定:undefined, -c/—check:true,-C/—no-check:false。

4 command 和 option代码语言:javascript代码运行次数:0运行复制
program  mand("join")  .option("-c, --check", "check option")  .option("-o, --output <output>", "output opti", "./temp")  .description("example program for command")  .action((opti, command) => {    cole.log(opti);  });

调用形式:foo join -c -o “\temp”

这里的 join 是子命令,形式上和 argument 很像,但语义上不一样,需要根据实际业务选择不同的实现方式。

5 command 和 argument 和 option代码语言:javascript代码运行次数:0运行复制
program  .version("0.1.1")  mand("join")  .argument("<env>", "environment")  .argument("[second]", "second command")  .option("-c, --check", "check option")  .option("-o, --output <output>", "output opti", "./temp")  .description("example program for command")  .action((env, second, opti, command) => {    cole.log(env);    cole.log(second);    cole.log(opti);  });

调用形式:foo join my-env my-second-argument -c —output ”./temp”

6 command 和 可变参数 和 option代码语言:javascript代码运行次数:0运行复制
program  .version("0.1.1")  mand("join")  .argument("<env>", "environment")  .argument("<str...>", "string list")  .option("-c, --check", "check option")  .description("example program for variadic argument ")  .action((env, str, opti, command) => {    cole.log(env);    cole.log(str);    cole.log(opti);  });

调用形式 foo join my-env s1 s2 s s4 -c

这里 s1 s2 s s4 都会放到 str 数组中

7 command 使用独立的处理文件代码语言:javascript代码运行次数:0运行复制
program  .version("0.1.0")  mand("install [name]", "install one or more packages") // index-install  mand("search [query]", "search with optional query", {    executableFile: "mySearchSubCommand",  })  mand("list", "list packages installed", { isDefault: true });

如果没有指定文件名,则使用 当前文件名-command 的形式查处理文件,否则报错,如这里的 install 子命令。

如果指定了文件名,则使用指定的文件名(相对路径),如这里的 search 子命令。 具体执行文件中怎么写呢?其实就是一个新的命令行解析处理。

如下,同样可以继续使用 command argument option

代码语言:javascript代码运行次数:0运行复制
ct { Command } = require('commander');ct program = new Command();
program.argument("<abc>")  .option('--ignore-case', 'ignore case',false)  .action((abc,opti,command)=>{      cole.log("action",abc);      cole.log("action",opti);      cole.log("action",command.args);  });
program.parse(process.ar);
ct arguments = program.args;ct opti = ();
cole.log("@",arguments);cole.log("@",opti);cole.log("@",program.processedArgs);
8 异步处理

上面的模板说明中,使用的是同步处理方式(program.parse()),如果需要异步处理,则使用 await program.parseAsync(process.ar)

代码语言:javascript代码运行次数:0运行复制
async function run() {  /* code goes here */}
async function main() {  programmand("run").action(run);  await program.parseAsync(process.ar);}
示例代码

JasonGrass/git-command-helper

其它

github social image generate

Github Social Image Generator - Bannerbear


原文链接:

本作品采用 「署名 4.0 国际」 许可协议进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2021年11月29日,如有侵权请联系 cloudcommunity@tencent 删除命令行异步命令行工具commandcole

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1222324.html

相关标签:无
上传时间: 2025-07-25 18:31:14
留言与评论(共有 19 条评论)
本站网友 天津合租网
19分钟前 发表
指定了就是 true
本站网友 砒石
21分钟前 发表
且在文章页面明显位置给出原文链接
本站网友 js效果
18分钟前 发表
"install one or more packages") // index-install mand("search [query]"
本站网友 东风系列导弹
23分钟前 发表
"search with optional query"
本站网友 欧佩克是什么意思
6分钟前 发表
--check"
本站网友 朝源
8分钟前 发表
-C/—no-check:false
本站网友 洛阳装修报价
14分钟前 发表
直接使用看官方的例子即可:commander.js/opti-common.js at master · tj/commander.js代码语言:javascript代码运行次数:0运行复制program .option('-d
本站网友 赵永贵
26分钟前 发表
username); cole.log("password
本站网友 机选双色球
25分钟前 发表
"no check option") .option("-o
本站网友 a股是什么
10分钟前 发表
"
本站网友 喝茶能减肥吗
1分钟前 发表
"mySearchSubCommand"
本站网友 梅园二手房
8分钟前 发表
opti
本站网友 鹿回头传奇
26分钟前 发表
原始发表:2021年11月29日
本站网友 红警大战辅助
28分钟前 发表
5 command 和 argument 和 option代码语言:javascript代码运行次数:0运行复制program .version("0.1.1") mand("join") .argument("<env>"
本站网友 三亚山海湾温泉家园
12分钟前 发表
command)=>{ cole.log("action"
本站网友 xaml
2分钟前 发表
"
本站网友 高校招生代理
4分钟前 发表
"check option") .option("-o
本站网友 测量仪器检测
21分钟前 发表
--pizza-type <type>'