ビルドやテストのコマンドをmise.tomlにまとめて管理したい

プロジェクトごとに使うnpm run buildmake testのようなコマンドを、READMEやシェルスクリプトへ散らばらせずmise.tomlにまとめて定義しておきたい場合がある。miseはmise.tomlにタスクを定義し、mise runで実行できるタスクランナー機能を備えている。

mise run の基本

mise.toml[tasks.<name>]としてタスクを定義する。

[tasks.hello]
run = "echo hello"

mise run <タスク名>で実行する。

$ mise run hello
[hello] $ echo hello
hello

タスク名だけで実行する

タスク名がmiseの他のサブコマンドと衝突しない場合、mise runを省略してタスク名だけでも実行できる。

$ mise hello
[hello] $ echo hello
hello

タスクの一覧を確認する

mise tasksで、mise.tomlに定義されているタスクの一覧を確認できる。descriptionを設定しておくと、一覧に説明も表示される。

[tasks.greet]
description = "挨拶を表示する"
run = "echo hello"

[tasks.build]
run = "echo building..."
$ mise tasks
build
greet  挨拶を表示する

タスク間の依存関係を定義する

dependsを使うと、あるタスクを実行する前に別のタスクを先に実行させられる。

[tasks.build]
depends = ["greet"]
run = "echo building..."

mise run buildを実行すると、build本体より先にgreetが実行される。

$ mise run build
[greet] $ echo hello
hello
[build] $ echo building...
building...
Finished in 26.1ms

ビルド前に依存パッケージのインストールを済ませておく、といった順序が決まっている処理をタスク間の依存関係として表現できる。