JavaScript を使用したコマンドライン アプリケーションの構築

JavaScript を使用したコマンドライン アプリケーションの構築

序文:

JavaScriptは Web 用に開発された言語ですが、その有用性はインターネットをはるかに超えています。 JavaScriptNode.jsElectronなどのプロジェクトのおかげで、汎用スクリプト言語であると同時にブラウザ コンポーネントでもあります。コマンドライン インターフェイスの構築用に特別に設計されたJavaScriptライブラリがあります。はい、ターミナルでJavaScriptを実行できます。

さて、ターミナルにコマンドを入力すると、通常、スイッチまたはフラグとも呼ばれるオプションがあり、これを使用してコマンドの実行方法を変更することができます。これは POSIX 仕様で定義されている便利な規則なので、プログラマーとしてはこれらのオプションを検出して解析する方法を知っておくと役立ちます。 JavaScript からこの機能を利用するには、コマンドライン インターフェイスを簡単に構築できるように設計されたライブラリを使用すると便利です。私のお気に入りはCommander.jsです。シンプルで柔軟性があり、直感的です。

1. ノードをインストールする

Commander.jsライブラリを使用するには、 Node.jsがインストールされている必要があります。 Linux では、パッケージ マネージャーを使用してNodeをインストールできます。たとえば、 FedoraCentOSMageia 、その他のシステムでは次のようになります。

$ sudo dnf インストール nodejs


WindowsおよびmacOSでは、nodejs.org Web サイトからインストーラーをダウンロードできます。

2. Commander.jsをインストールする

Commander.js をインストールするには、npm コマンドを使用します。

$ npm インストール コマンダー

3. JavaScriptコードにライブラリを追加する

JavaScripでは、 requireキーワードを使用してコードにライブラリを組み込む (Python に慣れている場合はインポートする) ことができます。 example.jsというファイルを作成し、お気に入りのテキスト エディターで開きます。 Commander.jsライブラリを含めるには、先頭に次の行を追加します。

const { プログラム } = require('commander');


4. JavaScript でのオプション解析

オプションを解析するには、まずアプリケーションが受け入れることができる有効なオプションを定義する必要があります。 Commander.jsライブラリを使用すると、短いオプションと長いオプションの両方を定義でき、各オプションの目的を明確にする便利なメッセージも定義できます。

プログラム
  .description('オプションを解析するサンプルアプリケーション')
  .option('-a, --alpha', 'アルファ')
  .option('-b, --beta <VALUE>', 'VALUE を指定します', 'Foo');

最初のオプションは、 alpha (略して -a) と呼ばれ、ブールスイッチです。つまり、存在するか、存在しないかのどちらかです。パラメータは必要ありません。 2 番目のオプションは、 beta (略して -b) と呼ばれ、単一の引数を受け入れ、引数を指定しない場合はデフォルト値を指定します。

5. コマンドラインデータにアクセスする

有効なオプションを定義したら、長いオプション名を使用して値を参照できます。

プログラム.parse();

const オプション = program.opts();
console.log('検出されたオプション:');

options.alpha の場合、 console.log('alpha');
 
const beta = !options.beta ? 'no' : options.beta;
console.log('ベータ版は: %s', ベータ版);

6. アプリケーションを実行する

まずオプションなしで node コマンドで実行してみてください:

$ ノード ./example.js 
検出されたオプション: 
ベータ版は: Foo

ユーザーによる上書きがない場合は、 betaデフォルトが使用されます。

もう一度実行しますが、今回は次のオプションを使用します。

$ ノード ./example.js --beta hello --alpha
検出されたオプション: 
アルファ
ベータ版は: こんにちは

今回は、テスト スクリプトはオプションalphaと、ユーザーがbetaオプションに指定した値を正常に検出しました。

7. オプション分析

参考までに、完全なデモ コードを以下に示します。

const { プログラム } = require('commander');

プログラム
  .description('オプションを解析するサンプルアプリケーション')
  .option('-a, --alpha', 'アルファ')
    .option('-b, --beta <VALUE>', 'VALUE を指定します', 'Foo');

プログラム.parse();

const オプション = program.opts();
console.log('検出されたオプション:');

console.log(オプションの種類);

if (options.alpha) console.log(' * alpha');
const beta = !options.beta ? 'no' : options.beta;
console.log(' * ベータは: %s', ベータ);

プロジェクトの Git リポジトリにはさらに多くの例があります。

ユーザー オプションを含めることは、あらゆるアプリケーションにとって重要な機能であり、 Commander.js使用すると簡単に実現できます。 Commander.js以外にもライブラリはありますが、このライブラリは非常に便利で使いやすいと思います。あなたのお気に入りのJavaScriptコマンドラインビルダーは何ですか?

JavaScript を使用してコマンドライン アプリケーションを構築する方法については、これで終わりです。JavaScript を使用してコマンドライン アプリケーションを構築する方法に関するその他の関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Node.js でコマンドライン引数を収集して解析する方法
  • Node.js を使用してコマンドライン ゲームを実装する方法
  • Node.jsはコマンドラインパラメータを処理するためにyargsを使用する
  • Linux コマンドライン ツールを使用して JSON 出力を解析およびフォーマットする方法
  • 画像とテキストによる Node.js コマンドライン チュートリアル
  • Node.JSはChromeブラウザがインストールされているかどうかを確認し、コマンドラインで指定されたURLを開きます。

<<:  nginx を使用して wgcloud へのアクセスを構成する方法

>>:  CSSでよく使われるフォントスタイルを設定することで様々なフォントの変更が可能(例詳細説明)

推薦する

Linux ソースコードからのソケット (TCP) バインドの詳細な説明

目次1. 最も単純なサーバー側の例2. バインドシステムコール2.1、inet_bind 2.2、i...

Vueカスタムカプセル化ボタンコンポーネント

Vueボタンコンポーネントのカスタムカプセル化コードは参考用です。具体的な内容は次のとおりです。ボタ...

mysql8.0 Windows x64 zip パッケージのインストールと構成のチュートリアル

MySQL 8 Windows版 zipインストール手順(ダウンロードアドレス) 1. ZIPファイ...

Docker コンテナ データ ボリュームの名前付きマウントと匿名マウントの問題

目次コンテナデータボリュームとはコンテナ データ ボリュームが必要なのはなぜですか?使用データボリュ...

MySQL 8.0.23のルートパスワードをリセットするための最適なソリューション

この方法は2021年2月7日に編集されました。私が使用しているバージョンは8.0.23です。事件の原...

Docker チュートリアル: コンテナの使用 (簡単な例)

Docker を初めて使用する場合は、コンテナの管理を始めるために習得する必要がある基本的なコマン...

サーバー上で Nginx を使用して Springboot プロジェクトをデプロイする方法の詳細なチュートリアル (jar パッケージ)

1. Javaプロジェクトをjarパッケージにパッケージ化するここではMavenツールを使用します...

MySQL テーブルにはどのくらいの量のデータを保存できますか?

プログラマーは MySQL を扱う機会が多く、毎日触れているとも言えますが、MySQL テーブルには...

Debian システムでの自動パッケージ更新の問題を解決する方法

いつから始まったのかはわかりませんが、コンピュータの電源を入れてインターネットに接続するたびに、デー...

Dockerはコンテナを通じてイメージを生成し、詳細にDockerCommitを送信します

目次ローカルでコンテナを作成した後、このコンテナに基づいてローカル イメージを作成し、このイメージを...

Firefoxでリンクをクリックしたときに点線の枠線を削除する方法

今日、ブラウザの互換性の問題にいくつか遭遇しました。そのうちの 1 つは奇妙に感じました。Firef...

nginx のスムーズな再起動を実装する方法

1. 背景サーバーの開発プロセスでは、新しいコードや構成をロードするためにサービスを再起動することが...

JavaScript でタブバーの切り替え効果を実装する

フロントエンド開発者が必ず知っておくべきケースとして、タブバーの切り替え効果があります。タブバー自体...

ネイティブJavaScriptカルーセル実装方法

この記事では、JavaScriptカルーセルの実装方法を参考までに紹介します。具体的な内容は次のとお...

Windows 8 での MySQL Community Server 5.6 のインストールと設定のチュートリアル

この記事では、Windows 8 での MySQL5.6 のインストールと設定のチュートリアルを記録...