Googleは最近、ZXと呼ばれる新しいライブラリをリリースした。これにより、開発者は、Node.jsを直接扱う手間をかけずに、JavaScriptを使ってCLIスクリプトを作成できる。
CLIスクリプトはほとんどの場合、Bashで記述される。ただし、特にLinuxコマンドラインに慣れていない開発者にとって、Bashスクリプトの作成は簡単な作業ではない。
Node.jsを使ってスクリプトを作成することは、長い間可能であったが、実行可能ファイルと対話し、引数と応答を処理することは非常に困難であり、そのようなタスクに対するJavaScriptの使用は限定的であった。
これらの課題に対処するために、Googleは最近、zxをリリースした。これは、JavaScript CLIスクリプトを作成する際の典型的な落とし穴に対処するNode.js実行可能ファイルである。また、開発プロセスをスピードアップするための実用的なツールとライブラリのセットも提供する。
開始するには、次のコマンドを使ってnpmでzxをグローバルにインストールする。
npm i -g zx
zxスクリプトの作成を開始する前に、2つの重要な前提条件を強調しておく必要がある。
まず、スクリプトに必要なインタープリターをオペレーティングシステムに知らせる必要がある。そのために、shebang (またはhashbang) と呼ばれる特別な命令を使用する。zxスクリプトの場合、ファイルの先頭に次の行を追加する。
#!/usr/bin/env zx
次に、次のようにして、作成したテキストファイルが実行可能ファイルであることをオペレーティングシステムに示す必要がある。
chmod +x ./<script name>
価値のあるCLIスクリプトを記述できるように、zxには、開発者がユーザやCLIと対話できるツールがいくつか含まれている。
これらには、3つの組み込みパッケージが含まれている。ファイルシステムとの対話に使用されるfs、オペレーティングシステム関連のユーティリティを提供するos、そして最後に、端末文字列のスタイル設定を可能にするchalkである。
さらに、zxは、データのフェッチ、ユーザとの対話、そしてもちろん、CLIコマンドの実行などの一般的なユースケースに対処するために、一般的に使用されるNode.jsコマンドに対する薄いラッパーを提供する。コマンドの完全なリストについては、公式ドキュメントを参照してください。
ラップされたすべてのコマンドはpromiseを返すため、JavaScriptのawait演算子を使用することを勧める。ただし、トップレベルのawaitサポートを有効にするには、開発者はスクリプトファイルを保存するときに.mjsファイル拡張子を使用する必要がある。それ以外の場合、await演算子を使うには、スクリプトを即時実行関数式でラップする必要がある。
伝えた方がよいこととして、zxはGoogle Githubユーザの下で公開されているが、現在はAnton Medvedev氏によって保守されており、Googleによって公式にサポートされているわけではない。
Google zxはApache License 2.0の下でリリースされており、そのソースコードはGithubで入手できる。