5
Help us understand the problem. What are the problem?

posted at

updated at

Organization

TypeScriptで手軽にCLIを実装する

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

まずはコンソールに出力するだけのスクリプトを実装します。

main.ts
const main = () => {
  console.log('Hello World')
}

main()

以下のコマンドを打つだけで、トランスパイルと実行が行われます

yarn ts-node main.ts
# -> Hello World

あとはmain.tsで実行したいスクリプトを実装するだけです。

main.ts
import { getUser } from './lib/api'

const main = () => {
  getUser()
}

main()

今回はAPIを叩く処理を実施します。

オプションの設定

冒頭でも触れましたが、このスクリプトにオプションを渡して処理を分岐させたいと思います。

引数を受け取って判定をしてもいいのですが、commanderというライブラリを使うとより手軽に便利に実装することができます。

yarn add commander

以下のようにオプションを定義して、対象のオプションの値を取得することができます。

main.ts
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の実装を、気軽に実行することができました。

参考

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
5
Help us understand the problem. What are the problem?