mise 実践ガイド
mise は複数のプログラミング言語やツールのバージョンを管理するツール。asdf の後継として開発され、より高速で使いやすい。
なぜ mise を使うのか
主な利点
- 統一的な管理: Node.js、Python、Ruby など複数の言語を一元管理
- プロジェクト単位の設定:
.mise.tomlでプロジェクトごとにバージョンを指定 - 高速: Rust で実装され、asdf より高速
- 自動インストール: ディレクトリに入ると自動的に必要なバージョンをインストール
- タスクランナー:
mise runでタスクを実行可能
インストール
macOS/Linux
curl https://mise.run | sh
Windows
irm https://mise.run | iex
インストール後、シェルの設定ファイルに以下を追加:
# ~/.bashrc または ~/.zshrc
eval "$(mise activate bash)" # bash の場合
eval "$(mise activate zsh)" # zsh の場合
基本的な使い方
ツールのインストール
# 最新版をインストール
mise install node@latest
mise install pnpm@latest
mise install jujutsu@latest
# 特定のバージョンをインストール
mise install node@20.0.0
mise install python@3.12
インストール済みツールの確認
mise list
ツールのアップデート
# すべてのツールをアップデート
mise update
# 特定のツールをアップデート
mise install node@latest
ツールの削除
mise uninstall node@20.0.0
mise.toml の使い方
プロジェクトのルートに mise.toml を配置すると、プロジェクト固有の設定を管理できます。
基本的な構成
# miseやpnpmをアップデートしたい時は `mise update` を実行する
[tools]
node = "lts" # Node.js の LTS バージョン
pnpm = "latest" # pnpm の最新版
jujutsu = "latest" # jujutsu の最新版
[settings]
auto_install = true # ディレクトリに入ると自動インストール
[tasks.pnpm-update]
description = "Update pnpm to latest version"
run = "mise install pnpm@latest"
tools セクション
使用するツールとバージョンを指定:
[tools]
node = "20.0.0" # 特定のバージョン
node = "lts" # LTS バージョン
node = "latest" # 最新版
python = "3.12" # Python 3.12
ruby = "3.3" # Ruby 3.3
settings セクション
mise の動作を設定:
[settings]
auto_install = true # 自動インストールを有効化
legacy_version_file = true # .node-version などのファイルを読み込む
tasks セクション
カスタムタスクを定義:
[tasks.dev]
description = "Start development server"
run = "pnpm run dev"
[tasks.build]
description = "Build for production"
run = "pnpm run build"
[tasks.test]
description = "Run tests"
run = "pnpm test"
タスクの実行:
mise run dev
mise run build
mise run test
実践的な使い方
プロジェクトのセットアップ
- プロジェクトに移動
mise.tomlを作成- 必要なツールを指定
- ディレクトリに入ると自動的にインストールされます
cd my-project
cat > mise.toml << 'EOF'
[tools]
node = "lts"
pnpm = "latest"
[settings]
auto_install = true
EOF
# ディレクトリに入ると自動的にインストールされる
cd ..
cd my-project
複数のプロジェクトで異なるバージョンを使用
# プロジェクト A
cd project-a
cat > mise.toml << 'EOF'
[tools]
node = "18.0.0"
EOF
# プロジェクト B
cd ../project-b
cat > mise.toml << 'EOF'
[tools]
node = "20.0.0"
EOF
# プロジェクト A に移動すると Node.js 18 が使用される
cd ../project-a
node --version # v18.0.0
# プロジェクト B に移動すると Node.js 20 が使用される
cd ../project-b
node --version # v20.0.0
グローバル設定
ホームディレクトリに ~/.config/mise/config.toml を作成すると、すべてのプロジェクトで使用されるデフォルト設定を定義できます:
[tools]
node = "lts"
python = "3.12"
[settings]
auto_install = true
このプロジェクトの mise.toml
このプロジェクトでは以下の設定を使用しています:
[tools]
node = "lts" # Node.js LTS
pnpm = "latest" # pnpm 最新版
jujutsu = "latest" # jujutsu 最新版
[settings]
auto_install = true # 自動インストール有効
[tasks.pnpm-update]
description = "Update pnpm to latest version"
run = "mise install pnpm@latest"
使用方法
# ツールのアップデート
mise update
# pnpm のアップデート
mise run pnpm-update
# インストール済みツールの確認
mise list
よくある質問
Q: asdf との違いは?
A: mise は asdf の後継として開発され、以下の点で優れています:
- Rust で実装され高速
- より直感的な設定ファイル (TOML)
- タスクランナー機能を内蔵
- より良いエラーメッセージ
Q: .node-version や .python-version は使えますか?
A: 使えます。legacy_version_file = true を設定すると、既存のバージョンファイルを読み込みます。
Q: グローバルとローカルの設定の優先順位は?
A: ローカル (プロジェクトの mise.toml) がグローバル (~/.config/mise/config.toml) より優先されます。
Q: mise を使わずにツールを使いたい場合は?
A: mise をアンインストールするか、mise deactivate を実行すると、システムにインストールされたツールが使用されます。
トラブルシューティング
ツールが見つからない
# mise のパスを確認
mise which node
# インストール済みツールを確認
mise list
# 再インストール
mise install node@latest
自動インストールが動作しない
# mise が有効化されているか確認
mise doctor
# シェルの設定を確認
cat ~/.bashrc | grep mise
cat ~/.zshrc | grep mise
バージョンが切り替わらない
# mise.toml を確認
cat mise.toml
# キャッシュをクリア
mise cache clear
# シェルを再起動
exec $SHELL
コマンドリファレンス
ツール管理
| コマンド | 説明 |
|---|---|
mise install <tool>@<version> | ツールをインストール |
mise uninstall <tool>@<version> | ツールをアンインストール |
mise list | インストール済みツール一覧 |
mise list-all <tool> | 利用可能なバージョン一覧 |
mise update | すべてのツールをアップデート |
設定管理
| コマンド | 説明 |
|---|---|
mise use <tool>@<version> | ツールを使用 (mise.toml に追加) |
mise current | 現在使用中のバージョン表示 |
mise which <tool> | ツールのパスを表示 |
mise where <tool> | ツールのインストール先を表示 |
タスク管理
| コマンド | 説明 |
|---|---|
mise run <task> | タスクを実行 |
mise tasks | 利用可能なタスク一覧 |
その他
| コマンド | 説明 |
|---|---|
mise doctor | mise の状態を診断 |
mise version | mise のバージョン表示 |
mise help | ヘルプを表示 |
参考リンク
まとめ
mise は複数のツールを統一的に管理できる強力なツールです。プロジェクトごとに異なるバージョンを使い分けることができ、チーム開発での環境統一に役立ちます。
このプロジェクトでは Node.js、pnpm、jujutsu を mise で管理しています。