mise run 入門:mise.toml でタスクを定義して Makefile を置き換える

スポンサーリンク

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コマンドにまとめられる