如何用 JavaScript 構建命令行應用
JavaScript 是一種為 Web 開發的語言,但它的用處已經遠遠超出了互聯網的範疇。由於 Node.js 和 Electron 這樣的項目,JavaScript 既是一種通用的腳本語言,也是一種瀏覽器組件。有專門設計的 JavaScript 庫來構建命令行界面。是的,你可以在你的終端中運行 JavaScript。
現在,當你在終端中輸入一個命令時,一般都有 選項,也叫 開關 或 標誌,你可以用來修改命令的運行方式。這是由 POSIX 規範 定義的一個有用的慣例,所以作為一個程序員,知道如何檢測和解析這些選項是很有幫助的。要從 JavaScript 獲得此功能,使用旨在簡化構建命令行界面的庫很有用。我最喜歡的是 Commander.js。它很簡單,很靈活,而且很直觀。
安裝 node
要使用 Commander.js 庫,你必須安裝 Node.js。在 Linux 上,你可以用你的包管理器安裝 Node。例如,在 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 命令行構建器是什麼?
via: https://opensource.com/article/21/11/javascript-command-line-apps
作者:Seth Kenlon 選題:lujun9972 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive