解析脚本参数

作为脚本或者命令行工具,一般都需要支持不同的用户参数。默认参数被保存在process.argv的数组中,如下:

[ nodeBinary, script, arg0, arg1, ... ]

模块commander

但是为了更方便地处理参数,我们可以使用第三方模块commander。安装如下:

npm install --save commander

然后我们可以使用commander如下:

#!/usr/bin/env node
- console.log('Hello, world!');
+ var program = require('commander');
+
+ program
+ .arguments('<file>')
+ .option('-u, --username <username>', 'The user to authenticate as')
+ .option('-p, --password <password>', 'The user's password')
+ .action(function(file) {
+ console.log('user: %s pass: %s file: %s',
+ program.username, program.password, file);
+ })
+ .parse(process.argv);

运行和结果如下:

snippet -u kannonboy -p correcthorsebatterystaple my_awesome_file
user: kannonboy pass: correcthorsebatterystaple file: my_awesome_file

默认的帮助已经被自动生成了,如下:

snippet --help
Usage: snippet [options] <file>
Options:
-h, --help output usage information
-u, --username <username> The user to authenticate as
-p, --password <password> The user's password

用户的交互

可以使用内置的process.stdin来处理,

但是可以使用第三方模块co-prompt,安装如下:

npm install --save co co-prompt

修改上面的如下:

+ var co = require('co');
+ var prompt = require('co-prompt');
var program = require('commander');
...
.option('-u, --username <username>', 'The user to authenticate as')
.option('-p, --password <password>', 'The user's password')
.action(function(file) {
+ co(function *() {
+ var username = yield prompt('username: ');
+ var password = yield prompt.password('password: ');
console.log('user: %s pass: %s file: %s',
- program.username, program.password, file);
+ username, password, file);
+ });
})

然后运行:

snippet my_awesome_file
username: kannonboy
password: *************************
user: kannonboy pass: correcthorsebatterystaple file: my_awesome_file

参考:

https://blog.developer.atlassian.com/scripting-with-node/

nodejs参数的处理与用户的交互的更多相关文章

  1. linux内核空间与用户空间信息交互方法

    linux内核空间与用户空间信息交互方法     本文作者: 康华:计算机硕士,主要从事Linux操作系统内核.Linux技术标准.计算机安全.软件测试等领域的研究与开发工作,现就职于信息产业部软件与 ...

  2. iOS10 UI教程禁用视图与用户的交互

    iOS10 UI教程禁用视图与用户的交互 在上文中我们提到了使用isHidden属性和alpha属性可以使视图与用户的交互被禁用,除此之外此功能还可以使用UIView的isUserInteractio ...

  3. 基础知识:IDE集成开发环境(pycharm)、基本数据类型、用户的交互、运算符

    今日内容: 1.IDE集成开发环境(pycharm) 2.基本数据类型(int.float.str.list.dict) 3.用户的交互(注释.输入input.输出print) 4.运算符(分类及使用 ...

  4. Python与用户的交互

    目录 Python与用户的交互 为什么交互 如何交互 Python2 中的交互 Python与用户的交互 为什么交互 让我们来回顾计算机的发明有何意义,计算机的发明是为了奴役计算机,解放劳动力.假设我 ...

  5. Python与用户相交互

    今日所得 Python中注释的重要性 Python与用户相交互: 1.输入 2.输出 3.格式化输出 Python的基本数据类型:int,float,str,list,dict,bool 运算符 1. ...

  6. springmvc-高级参数绑定-映射-异常-json数据交互-拦截器

    1.1. 高级参数绑定 1.1.1. 复制工程 把昨天的springmvc-web工程复制一份,作为今天开发的工程 复制工程,如下图: 粘贴并修改工程名为web2,如下图: 工程右键点击,如下图: 修 ...

  7. linux内存(三)内核与用户空间交互

    来自网址http://www.kerneltravel.net/jiaoliu/005.htm 用户程序和内核的信息交换是双向的,也就是说既可以主动从用户空间向内核空间发送信息,也可以从内核空间向用户 ...

  8. shell练习--用户下载交互检测

    #!/bin/bash #By spinestars #-- read -p "请输入下载目录路径" down_dir read -p "请输入网址路径" ur ...

  9. Nodejs+Express+Mysql实现简单用户管理增删改查

    源码地址 https://github.com/king-y/NodeJs/tree/master/user 目录结构 mysql.js var mysql = require('mysql'); v ...

  10. 【JavaFx教程】第三部分:与用户的交互

    第3部分的主题: 在表中反应选择的改变(TableView中). 增加增加,编辑和删除按钮的功能. 创建自定义弹出对话框编辑人员. 验证用户输入. 响应表的选择 显然,我们还没有使用应用程序的右边.想 ...

随机推荐

  1. sax, dom, jdom技术对比

    ---- sax, dom, jdom技术的优缺点比较 SAX分析器在对XML文档进行分析时,触发一系列的事件,应用程序通过事件处理函数实现对XML文档的访问.由于事件触发本身是有时序性的,因此,SA ...

  2. RELIC库学习

    <RELIC库学习> 文章介绍:密码学与区块链技术实验室向开源项目RELIC贡献国密算法代码 了解 RELIC是由Diego F. Aranha开发的高效.灵活的开源密码原语工具箱,包含多 ...

  3. GD32F103C8T6看门狗

    GD32F10x看门狗 两个看门狗设备(独立看门狗IWDG和窗口看门狗WWDG)可用来检测和解决由软件错误引起的故障: 当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位. ...

  4. Oracle 遍历游标的四种方式汇总(for、fetch、while、BULK COLLECT)

    本文原创:https://www.cnblogs.com/Marydon20170307/p/12869692.html 感谢博主分享 注意:原文中方式四FORALL处有语法错误,应该使用FOR. 1 ...

  5. NAT原理:概念、使用场景、转发流程及规则

    本文分享自天翼云开发者社区<NAT原理:概念.使用场景.转发流程及规则>,作者:x****n 网络地址转换(NAT)是一种在计算机网络中将一个网络的IP地址转换为另一个网络的IP地址的技术 ...

  6. 玩转云端|天翼云边缘安全加速平台AccessOne实用窍门之让办公访问安全、高效又稳定

    本文分享自天翼云开发者社区<玩转云端|天翼云边缘安全加速平台AccessOne实用窍门之让办公访问安全.高效又稳定>,作者:天翼云社区官方账号 随着社会信息化程度不断提高,远程办公已经成为 ...

  7. 玩转云端 | 真实模拟,即压即测,天翼云息壤性能测试PTS实践大揭秘!

    满城春色惹人醉,恰是出游好时节. 伴随春暖花开,我国旅游市场快速升温,越来越多的人开始走出家门,去追寻久违的诗和远方.根据文化和旅游部数据中心近日测算,预计2023年,我国国内旅游人数约为45.5亿人 ...

  8. Zabbix Proxy安装及替换Zabbix阿里云源脚本

    zabbix proxy安装步骤 说明: Zabbix Proxy使用的是独立的数据库实例,如果放在一起数据容易遭到破坏;Proxy仅仅是一个数据采集的作用,其他的依然是依靠Server端实现,这就会 ...

  9. flutter-iOS数字键盘无法属于小数点

    keyboardType:TextInputType.numberWithOptions(decimal: true),  

  10. DeepSeek引发创业的思考

    2025年春节最火的就是DeepSeek,就像08年小沈阳的火一样,越来越多的不是Ai这个行业的人开始越来越关注Ai,作为一个一直从事Ai的工作者,看到了ChatGPT的涌现后,中国再次冲出来的中国式 ...