JavaScript 是一种为 Web 开发的语言,但它的用途已经远远超出互联网。由于 Node.js 和 Electron 等项目,JavaScript 既是一种通用脚本语言,也是一个浏览器组件。有一些专门为构建命令行界面而设计的 JavaScript 库。是的,你可以在终端中运行 JavaScript。
现在,当你在终端中输入命令时,通常会有 选项,也称为开关或标志,你可以使用它们来修改命令的运行方式。这是 POSIX 规范 定义的有用约定,因此作为程序员,了解如何检测和解析选项很有帮助。为了从 JavaScript 中获得此功能,使用旨在简化构建命令行界面的库很有用。我最喜欢的是 Commander.js。它简单、灵活且直观。
安装 Node.js
要使用 Commander.js 库,你必须安装 Node.js。在 Linux 上,你可以使用你的包管理器安装 Node.js。例如,在 Fedora、CentOS、Mageia 和其他发行版上
$ sudo dnf install nodejs
在 Windows 和 macOS 上,你可以从 nodejs.org 网站下载安装程序。
安装 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
这次,测试脚本成功检测到 --alpha
选项,以及用户提供的 --beta
选项及其值。
选项解析
这是完整的演示代码,供你参考
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);
项目的 Git 仓库 中有更多示例。
为你的用户提供选项是任何应用程序的重要功能,Commander.js 使其变得容易。除了 Commander.js 之外,还有其他库,但我发现这个库易于使用且快速。你最喜欢的 JavaScript 命令行构建器是什么?
评论已关闭。