Linux中國

如何用 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(&apos;-b, --beta <VALUE>&apos;, &apos;Specify a VALUE&apos;, &apos;Foo&apos;);

第一個選項,我稱之為 --alpha(簡寫 -a),是一個布爾型開關:它要麼存在,要麼不存在。它不需要任何參數。第二個選項,我稱之為 --beta(簡寫 -b),接受一個參數,甚至在你沒有提供任何參數的情況下指定一個默認值。

訪問命令行數據

當你定義了有效的選項,你就可以使用長的選項名稱來引用這些值:

program.parse();

const options = program.opts();
console.log(&apos;Options detected:&apos;);

if (options.alpha) console.log(&apos;alpha&apos;);

const beta = !options.beta ? &apos;no&apos; : options.beta;
console.log(&apos;beta is: %s&apos;, 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(&apos;commander&apos;);

program
  .description(&apos;A sample application to parse options&apos;)
  .option(&apos;-a, --alpha&apos;, &apos;Alpha&apos;)
    .option(&apos;-b, --beta <VALUE>&apos;, &apos;Specify a VALUE&apos;, &apos;Foo&apos;);

program.parse();

const options = program.opts();
console.log(&apos;Options detected:&apos;);

console.log(typeof options);

if (options.alpha) console.log(&apos; * alpha&apos;);
const beta = !options.beta ? &apos;no&apos; : options.beta;
console.log(&apos; * beta is: %s&apos;, beta);

在該項目的 Git 倉庫 中還有更多例子。

對任何應用來說,包括用戶的選項都是一個重要的功能,而 Commander.js 使它很容易做到。除了 Commander.js,還有其他庫,但我覺得這個庫使用起來很方便快捷。你最喜歡的 JavaScript 命令行構建器是什麼?

via: https://opensource.com/article/21/11/javascript-command-line-apps

作者:Seth Kenlon 選題:lujun9972 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國