mise run 入門:mise.toml でタスクを定義して Makefile を置き換える
miseのタスク機能を使うと、mise.toml にビルド・テスト・lintなどのコマンドをまとめて定義できます。make コマンドに頼らずに、プロジェクト共通のコマンドをシンプルに管理できます。
基本的なタスク定義
mise.toml に [tasks.タスク名] セクションを追加します。
[tasks.build] description = "ビルドを実行する" run = "npm run build" [tasks.test] description = "テストを実行する" run = "npm test" [tasks.lint] description = "Lint を実行する" run = "npx eslint src/"
実行は mise run または短縮形の mise r を使います。
mise run build mise r test # 短縮形
タスク一覧を確認する
mise tasks ls
build ビルドを実行する lint Lint を実行する test テストを実行する
description を書いておくとチームメンバーが一覧を見たときに意図が伝わります。
タスクを依存関係でまとめる
depends で複数タスクをまとめて実行できます。
[tasks.ci] description = "CI 相当のタスクをまとめて実行する" depends = ["lint", "test", "build"]
mise run ci
[lint] $ npx eslint src/ [test] $ npm test [build] $ npm run build ... Finished in 3.2s
depends に指定したタスクは並列実行されます。順序が重要な場合は depends の代わりに run に連続コマンドを書きます。
複数コマンドを実行する
1つのタスクに複数のコマンドを書くには配列にします。
[tasks.setup] description = "依存インストールとビルド" run = [ "npm install", "npm run build", ]
環境変数を渡す
タスクに環境変数を設定できます。
[tasks.dev] description = "開発サーバーを起動する" run = "npm run dev" env = { PORT = "3000", NODE_ENV = "development" }
Makefile との比較
| 機能 | Makefile | mise タスク |
|---|---|---|
| タスク定義 | target: deps |
[tasks.name] |
| タスク一覧 | make help(要定義) |
mise tasks ls(標準) |
| 並列実行 | make -j |
depends に指定 |
| 環境変数 | export VAR=value |
env = { VAR = "value" } |
| インストール不要 | make はほぼ標準搭載 | mise が必要 |
| 構文 | 独自(タブ必須など) | TOML で読みやすい |
mise を使った Node.js・Ruby の環境構築については「mise で Node.js をインストールする方法」を参照してください。
まとめ
| コマンド | 説明 |
|---|---|
mise tasks ls |
タスク一覧を表示 |
mise run <task> |
タスクを実行 |
mise r <task> |
mise run の短縮形 |
depends = [...] |
複数タスクを依存関係でまとめる |
env = { ... } |
タスクに環境変数を設定する |
mise.tomlに書くのでプロジェクトのバージョン管理(git)に含められるdescriptionを書くとmise tasks lsで意図が伝わるdependsを使うと lint → test → build のような流れを1コマンドにまとめられる