您现在的位置是:首页 > Javascript
当前栏目
如何在 JavaScript 中构建命令行应用程序
2023-03-14 22:31:45 时间
安装节点
要使用 Commander.js 库,您必须安装 Node.js。在 Linux 上,您可以使用包管理器安装 Node。例如,在 Fedora、CentOS、Mageia 等上:
$ sudo dnf install nodejs
安装 Commander.js
要安装 Commander.js,请使用以下npm
命令:
$ npm install commander
向 JavaScript 代码添加库
在 JavaScript 中,您可以使用require
关键字将库包含(或导入,如果您习惯使用 Python)到您的代码中。创建一个名为的文件example.js
并在您喜欢的文本编辑器中打开它。将此行添加到顶部以包含 Commander.js 库:
const { program } = require('commander');
JavaScript 中的选项解析
解析选项必须做的第一件事是定义应用程序可以接受的有效选项。Commander.js 库可让您定义短选项和长选项,并附有帮助说明每个选项的目的的有用信息。
program
.description('A sample application to parse options')
.option('-a, --alpha', 'Alpha')
.option('-b, --beta <VALUE>', 'Specify a VALUE', 'Foo');
第一个选项,我称之为--alpha
(-a
简称),是一个布尔开关:它要么存在,要么不存在。它不需要任何参数。我称之为--beta
(-b
简称)的第二个选项接受一个参数,甚至在您没有提供任何内容时指定一个默认值。
访问命令行数据
定义有效选项后,您可以使用长选项名称引用这些值:
program.parse();
const options = program.opts();
console.log('Options detected:');
if (options.alpha) console.log('alpha');
const beta = !options.beta ? 'no' : options.beta;
console.log('beta is: %s', beta);
运行应用程序
尝试使用node
命令运行它,首先没有选项:
$ node ./example.js
Options detected:
beta is: Foo
beta
在没有用户覆盖的情况下使用的默认值。
再次运行它,这次使用以下选项:
$ node ./example.js --beta hello --alpha
Options detected:
alpha
beta is: hello
这一次,测试脚本成功检测到了 option --alpha
,以及--beta
用户提供的值的option 。
选项解析
以下是完整的演示代码供您参考:
const { program } = require('commander');
program
.description('A sample application to parse options')
.option('-a, --alpha', 'Alpha')
.option('-b, --beta <VALUE>', 'Specify a VALUE', 'Foo');
program.parse();
const options = program.opts();
console.log('Options detected:');
console.log(typeof options);
if (options.alpha) console.log(' * alpha');
const beta = !options.beta ? 'no' : options.beta;
console.log(' * beta is: %s', beta);
相关文章
- 鲜为人知但很有用的 HTML 属性
- 翻转再翻转!有意思的水平横向溢出滚动
- 自定义计数器小技巧!CSS 实现长按点赞累加动画
- 过五关!React高频面试题指南
- 软件开发中的十个认知偏差
- 不需要 JS!仅用 CSS 也能达到监听页面滚动的效果!
- 一文读懂TypeScript类型兼容性
- Vue 的响应式原则与双向数据绑定
- 快速掌握 TypeScript 新语法:Infer Extends
- JWT教你如何证明你是我的人!
- 一篇带给你 V8 GC 的实现
- 面试官:请使用JS完成一个LRU缓存?
- 通过可视化来学习JavaScript事件循环
- 新的跨域策略:使用 COOP、COEP 为浏览器创建更安全的环境
- 为什么有人说 vite 快,有人却说 vite 慢?
- 种草 Vue3 中几个好玩的插件和配置
- 超全面的前端工程化配置指南
- Vue 状态管理未来样子
- Volatile关键字能保证原子性么?
- 面试突击:SpringBoot 有几种读取配置文件的方法?