概要
mise に Monorepo Tasks が登場。 複数プロジェクトを単一リポジトリで 効率管理 可能。 タスク自動検出 ・ ツール継承 ・ ワイルドカード実行 を提供。 多言語対応 ・ シンプルな設定 で大規模モノレポもサポート。 既存のツールと比較しつつ、 導入メリット を解説。
Monorepo Tasks 新機能発表
- Monorepo Tasks は、複数プロジェクトを1つのリポジトリで管理するための 新機能。
- 各プロジェクトごとに 独立したツール・環境変数・タスク を維持可能。
- Bazel や Turborepo のような強力なモノレポ管理機能を、 mise流のシンプルさ で実現。
- 全タスクの自動検出 と 名前空間付与 により、識別性と実行管理性を向上。
- 例:
mise //projects/frontend:buildやmise //services/api:deploy形式で実行。
- 例:
主な特徴
- 統一タスク名前空間 :全プロジェクトのタスクを自動検出し、パスでプレフィックス付与。
- スマートなツール・環境継承 :ルートで共通ツール定義、プロジェクトごとに上書き可能。
- 例:
node = "20"(全体)、node = "14"(特定プロジェクトのみ上書き)
- 例:
- 強力なワイルドカードパターン :複数プロジェクトのタスクを一括実行。
- 例:
mise //...:testやmise '//projects/frontend:*'
- 例:
- どこからでも一貫実行 :リポジトリ内のどこからでも、正しいツール・環境でタスク実行。
- 自動信頼伝播 :ルートを一度信頼すれば、配下の設定も自動で信頼。
クイックスタート
-
ルート
mise.tomlで 機能有効化 :experimental_monorepo_root = true -
環境変数セット :
export MISE_EXPERIMENTAL=1 -
各プロジェクトに タスク追加 :
[tasks.build] run = "npm run build" -
どこからでもタスク実行 :
mise //projects/frontend:buildやmise //...:test- 例:
- サービス全ビルド:
mise //services/...:build - アプリ全テスト:
mise //apps/...:test - 全タスク一括:
mise '//...:*'
- サービス全ビルド:
- 例:
導入メリット
- スクリプト重複排除 :一度定義すればどこからでも使える。
- 一貫した環境提供 :各プロジェクトに必要なツールを正確に割り当て。
- 自動化容易 :ワイルドカードでCI/CDパイプラインも簡単。
- 開発体験向上 :明確で発見しやすいタスク名前空間。
他ツールとの比較
- Taskfile/Just (シンプルなタスクリーダー)
- 単一プロジェクト向け。モノレポ向けの自動検出や継承機能は非搭載。
- miseの強み :モノレポ全体での自動タスク検出・ワイルドカードパターン。
- Nx/Turborepo/Lerna (JavaScript特化)
- JS/TSモノレポに特化。依存グラフやキャッシュなど強力だが、他言語対応は限定的。
- miseの強み :多言語対応、ツールバージョン管理、環境変数一元化。
- Bazel/Buck2 (大規模ビルドシステム)
- 超大規模向け。厳格な分離や複雑なDSLが必要で、学習コスト・運用コスト大。
- miseの強み :非エルメティック(柔軟運用)、TOMLで簡単設定、既存コードベースの大幅変更不要。
- Rush/Moon (その他注目ツール)
- RushはJS依存管理特化、MoonはRustベースで多言語対応志向。
miseのスイートスポット
| 機能 | シンプルランナー | JS特化ビルド | mise | |--------------------------|------------------|--------------|------| | 多言語対応 | ✅ | ❌ | ✅ | | 学習コスト小 | ✅ | ⚠️ | ✅ | | タスク自動検出 | ❌ | ✅ | ✅ | | ワイルドカードパターン | ❌ | ⚠️ | ✅ | | ツールバージョン管理 | ❌ | ❌ | ✅ | | 環境継承 | ❌ | ⚠️ | ✅ | | 最小構成 | ✅ | ⚠️ | ✅ | | タスクキャッシュ | ❌ | ✅ | ❌ |
miseが最適なケース
- 多言語モノレポ 運用
- ツール+タスク一元管理 を求める場合
- シンプルさ重視 かつ十分なパワーが欲しい場合
- 既にmiseでツール管理 している場合
他ツールを検討すべきケース
- JS/TS専用 :NxやTurborepoがより多機能
- Google/Meta級の大規模 :Bazel/Buck2が分散ビルドに最適
- 高度なタスクキャッシュ必須 :Nx、Turborepo、Bazelを推奨
まとめ・フィードバック募集
- Monorepo Tasks は実験的機能だが、 即利用可能 で十分な完成度。
- API変更の可能性あり、ユーザーからの フィードバック歓迎。
- 公式ドキュメント :「Monorepo Tasks Guide」も参照推奨。
- 利用体験や要望、改善点など コミュニティで共有 を呼びかけ。
- miseコミュニティへの感謝 と今後の発展への期待。