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
でスクリプトを書いてしまうことが多いです。