😄
Commanderを使ってCLIツールを作ってみるメモ
Commanderを使ってCLIツールを作ってみるメモ
Commanderというライブラリを使用すると、簡単にCLIツールが作れる。今回は引数に入力したライブラリをインストールするCLIツールを実装してcommanderに慣れることを目標とする。
child_process
モジュールを使用することでサブプロセスでコマンドを実行することができるので内部で使用する。
プロジェクトの準備
前提条件
TypeScriptプロジェクトがすでに作成済み
実装
-
command("コマンド名")
- コマンド名を登録する -
description("説明")
- コマンドの説明 -
argument()
- コマンドの引数を指定する- <引数名> - 必須の引数
- [引数名] - オプションの引数
- 今回のように最後に...をつけると可変長引数になり、入力した引数を
action
メソッド内で配列で取得できる。
commanderの各メソッドがわかりやすいシンプルな名前なので簡単に使える
import { execSync } from "child_process";
import { Command } from "commander";
export const installCommand = new Command()
.command("install")
.description("install packages")
.argument("<targets...>")
.action((targets: string[]) => {
targets.forEach(async (target) => {
console.log(`npm install ${target}`)
execSync(`npm install ${target}`)
console.log(`✅ npm install ${target}`)
})
});
-
addCommand
でコマンドを登録することができる
import { program } from "commander";
import { installCommand } from "./commands/install";
program.addCommand(installCommand);
program.parse(process.argv)
コマンドのヘルプを表示したらちゃんと反映されている
Commands:
install <targets...> install packages
help [command] display help for command
参考
最後に
間違っていることあればコメントに書いていただけると幸いです。
よろしくお願いいたします。
Discussion