17
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TypeScriptで手軽にCLIを実装する

Last updated at Posted at 2022-04-08

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

参考

17
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?