GitHub Actions上で簡単なスクリプトを実行する機会があり、TypeScriptで書いてさくっと実行したいなと思いました。また、
- 開発時に毎回JavaScriptにトランスパイルするのはめんどくさい
- mainにマージする前はDry Runを実行したい
という背景から、TypeScriptのトランスパイルと実行を手軽にできるts-node
、 CLIのオプションなどを手軽に設定できるcommander
を使うことにしました。
記事で使っているコードはこちらのリポジトリに上げています。
ts-nodeでTypeScriptの実行
typescript, ts-nodeをインストールします。
yarn add -D typescript ts-node
yarn tsc --init
まずはコンソールに出力するだけのスクリプトを実装します。
const main = () => {
console.log('Hello World')
}
main()
以下のコマンドを打つだけで、トランスパイルと実行が行われます
yarn ts-node main.ts
# -> Hello World
あとはmain.tsで実行したいスクリプトを実装するだけです。
import { getUser } from './lib/api'
const main = () => {
getUser()
}
main()
今回はAPIを叩く処理を実施します。
オプションの設定
冒頭でも触れましたが、このスクリプトにオプションを渡して処理を分岐させたいと思います。
引数を受け取って判定をしてもいいのですが、commander
というライブラリを使うとより手軽に便利に実装することができます。
yarn add commander
以下のようにオプションを定義して、対象のオプションの値を取得することができます。
import { program } from 'commander'
import { getUser } from './lib/api'
const main = (dryRun: boolean) => {
getUser(dryRun)
}
program.option('-d, --dry-run', 'dry run')
program.parse()
const options = program.opts()
main(options.dryRun)
上記のように実装することで、-d
オプションをつけるとdryRunを実行することができます。
commanderは自動でhelpオプションも作成してくれる点も嬉しいです。
$ yarn ts-node main.ts -h
Usage: main [options]
Options:
-d, --dry-run dry run
-h, --help display help for command
これだけで好きなTypeScriptの実装を、気軽に実行することができました。