zxというツールを紹介します。
シンプルな処理などはzx
でスクリプトを書くことができるので便利です。
目次
- zxをインストールする
- zxのスクリプトの先頭にzxのShebangを書く
- zxのimportは明示的に書く
- console.logの代わりにechoでコンソールに出力することもできる
- $でコマンドを実行することができる
- minimistでコマンドライン引数を解析する
- コマンドライン引数を解析して処理をする
- おわりに
- 参考記事
zxをインストールする
zx
をインストールします。
グローバルにインストールしておくと便利です。
$ npm install --global zx
zxのスクリプトの先頭にzxのShebangを書く
zx
のShebang
をファイルの先頭に書いておけば、ファイルのパスを指定するだけでzx
のスクリプトを実行することができます。
#!/usr/bin/env zx
下記のようにnode
やnpx
といったコマンドを書かずに済みます。
zx
のスクリプトのファイルのパスを指定するだけで実行することができるようになります。
$ ./script/example.js
zxのimportは明示的に書く
zx
のパッケージの読み込みを明示的に書かなくても、$
やcd
などの関数は呼び出すことはできますが、明示的にzx
のパッケージの読み込みを書くことでVS Code
の入力補完が効くようになります。
import "zx/globals";
console.logの代わりにechoでコンソールに出力することもできる
たまにconsole.log
と書くのがめんどうだなと感じますが、それを解決してくれるのがecho
です。
echo
という短い関数名でコンソールに出力することができます。
echo("Hello world!");
$でコマンドを実行することができる
$
という関数を呼び出せば、コマンドを実行することができます。
const result = await $`tree -d -L 1`
echo(result);
minimistでコマンドライン引数を解析する
minimist
が内蔵されていますので、コマンドライン引数も解析することができます。
const argv = minimist(process.argv.slice(2), {
string: ["value"],
alias: {
v: "value",
},
});
echo(argv?.value);
下記のようにコマンドライン引数に値を渡して、スクリプトを実行することができます。
$ ./src/example.js --v hey
$ ./src/example.js --value hey
コマンドライン引数を解析して処理をする
コマンドライン引数を解析して処理をする際のコードを書いておきます。
#!/usr/bin/env zx
import "zx/globals";
const argv = minimist(process.argv.slice(2), {
string: ["message"],
alias: {
m: "message",
},
});
if (!argv?.message) {
process.exit();
}
echo(argv?.message);
おわりに
zx
のドキュメントを読むと、色々な機能があります。
個人的にはシンプルな処理であればzx
でスクリプトを書いてしまうことが多いです。