miseは複数のプログラミング言語やツールのバージョンを簡単に管理できる次世代バージョンマネージャーです。
Node.jsを含む多くのランタイムを一つのツールで管理できるため、開発環境をシンプルに保てます。
このガイドではWindows環境でのmiseのインストールからNode.jsバージョン管理までを詳しく解説します。
Windows 10/11であれば、Microsoft公式のパッケージマネージャーであるWingetを使って簡単にmiseをインストールできます。
# miseの検索
winget search mise
# miseのインストール
winget install jdx.mise
インストールが完了したら、以下のコマンドで正常にインストールされたか確認しましょう:
mise --version
バージョン番号が表示されれば成功です(例:mise 2025.5.1
)。
Wingetが利用できない環境では、公式GitHubリポジトリからインストーラーを直接ダウンロードできます:
# PowerShell を使った直接インストール
irm https://mise.jdx.dev/install.ps1 | powershell
miseを正常に機能させるには、適切に環境変数を設定する必要があります。
PowerShellで下記のコマンドを実行します。
$shimPath = "$env:USERPROFILE\AppData\Local\mise\shims"
$currentPath = [Environment]::GetEnvironmentVariable('Path', 'User')
$newPath = $currentPath + ";" + $shimPath
[Environment]::SetEnvironmentVariable('Path', $newPath, 'User')
環境変数が正しく設定されたかを確認するには、新しいターミナルウィンドウを開いて以下を実行します:
echo $env:PATH
出力に %USERPROFILE%\AppData\Local\mise\shim
が含まれていれば成功です。
miseの最大の魅力の一つは、プロジェクトに既に存在する様々なバージョンファイルを自動で検出し、適切なツールバージョンに切り替えてくれることです。
この機能により、nvmやasdfなど他のバージョンマネージャーからのスムーズな移行が可能になります。
miseは以下のようなバージョンファイルをネイティブでサポートしています:
mise独自の設定ファイル:
mise.toml
- メイン設定ファイルmise.local.toml
- ローカル設定ファイル(コミット対象外).tool-versions
- asdf互換ファイル
言語固有のバージョンファイル:
- Node.js:
.nvmrc
,.node-version
- Python:
.python-version
,.python-versions
- Ruby:
.ruby-version
,Gemfile
- Go:
.go-version
,go.mod
- Java:
.java-version
,.sdkmanrc
- その他多数の言語とツール
ディレクトリを移動すると、miseは以下の順序で設定ファイルを検索します:
- カレントディレクトリから親ディレクトリへ向かって再帰的に検索
- mise独自の設定ファイル(
mise.toml
,mise.local.toml
)を最優先で確認 - asdfの
.tool-versions
ファイルを次に確認 - 各ツール固有のバージョンファイル(
.nvmrc
など)を確認
この検索は非常に高速で、以下の最適化により実現されています:
- ディレクトリが変更されていない場合や設定ファイルが更新されていない場合は早期終了
- バージョンファイルをキャッシュしてパフォーマンスを向上
- 重いshimレイヤーではなく、直接的なPATH変更を使用
miseの自動バージョン切り替えはシェルフックによって実現されます:
# PowerShellプロファイルに追加(既に設定済み)
mise activate powershell | Out-String | Invoke-Expression
# ディレクトリ変更で自動的にバージョンが切り替わる
PS> cd node-project-with-nvmrc
PS> node -v
v18.15.0 # .nvmrcから読み込まれたバージョン
PS> cd ../python-project
PS> python --version
Python 3.10.0 # .python-versionから読み込まれたバージョン
同一ツールに対して複数のバージョンファイルが存在する場合、以下の優先順位で決定されます:
- 場所の優先度: カレントディレクトリのファイルが親ディレクトリよりも優先
- ファイル形式の優先度(高い順):
mise.local.toml
mise.toml
.tool-versions
(asdf形式)- 言語固有ファイル(
.nvmrc
,.python-version
など)
- 環境固有設定(
MISE_ENV
が設定されている場合) - グローバル設定(フォールバック)
設定の読み込み順序はmise config
コマンドで確認できます:
mise config
miseは他のバージョンマネージャーからの優れた移行体験を提供します:
- asdfから:
.tool-versions
ファイルをそのまま使用可能 - nvmから:
.nvmrc
ファイル(lts/hydrogen
などのエイリアスを含む)を理解 - pyenv/rbenv等から: 各ツール固有のバージョンファイルを読み取り
ツールの再インストールは必要ですが、プロジェクトの設定ファイルはそのまま使用できます:
# 既存の.nvmrcを持つプロジェクト
PS> cd node-project
PS> cat .nvmrc
18
PS> mise install # .nvmrcを自動的に読み込み
PS> node -v
v18.x.x
mise trust
機能は、バージョンファイルの処理に重要なセキュリティ層を追加します:
-
以下の機能を持つ設定ファイルには明示的な承認が必要:
- 環境変数を設定するファイル
- コードを実行できるテンプレートを使用するファイル
- セキュリティに影響する特定の設定
-
信頼状態の管理:
mise trust [設定ファイル]
コマンドtrusted_config_paths
設定による制御
この仕組みにより、信頼されたプロジェクトでのスムーズな作業流れを保ちながら、サプライチェーン攻撃から保護します。
複数ツールプロジェクトでの使用:
# mise.toml
[tools]
node = "20"
python = "3.11"
terraform = "1.5"
[env]
NODE_ENV = "development"
CI/CDでの統合:
# GitHub Actions ワークフロー
name: CI
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: jdx/mise-action@v2
- run: npm test # .nvmrcや.tool-versionsからバージョンを使用
バージョンファイル検出の問題は、通常以下で解決できます:
-
アクティベーション状態の確認:
mise doctor
-
設定ファイル読み込みの確認:
mise config ls
-
アクティブなツールバージョンとソースの確認:
mise ls
-
言語固有バージョンファイルの有効化(特に2025.10.0以降重要):
mise settings add idiomatic_version_file_enable_tools node
-
デバッグモードでの詳細確認:
$env:MISE_DEBUG = "1" mise version
この自動検出機能により、miseは既存のプロジェクトとシームレスに統合でき、チーム全体で一貫した開発環境を簡単に維持できます。
miseを使ってNode.js v22をグローバルにインストールするには:
# Node.js v22の最新バージョンをインストールしてグローバルデフォルトに設定
mise use --global node@22
特定のマイナーバージョンを指定することもできます:
mise use --global node@22.1.0
mise install: ランタイムをインストールするだけで、パスには追加しません。
# Node.js v18をインストールするだけ
mise install node@18
mise use: ランタイムをインストールし、カレントセッションまたはグローバルで使用できるようにします。
# プロジェクト固有でNode.js v18を使用(.mise.tomlに記録)
mise use node@18
# グローバルでNode.js v20を使用
mise use --global node@20
インストール済みのNode.jsバージョンを一覧表示:
mise ls node
特定のプロジェクトでのみ異なるバージョンを使用:
# プロジェクトディレクトリに移動
cd your-project-directory
# このプロジェクトのみNode.js v18を使用
mise use node@18
一時的に別バージョンを使用(現在のシェルセッションのみ):
mise shell node@16
miseではNode.jsだけでなく、様々なツールもインストールできます。
# pnpmの最新バージョンをインストール
mise use --global pnpm@latest
mise use --global yarn@stable
miseは多くのnpmパッケージを直接インストールできます:
# TypeScriptをグローバルにインストール
mise use --global typescript@latest
# Viteをグローバルにインストール
mise use --global vite@latest
mise設定ファイルを使えば、プロジェクトやグローバル環境の設定を簡単に管理できます。
グローバル設定ファイルを作成・編集:
# 設定ディレクトリが無ければ作成
mkdir -p ~/.config/mise
# グローバル設定ファイルを編集
notepad ~/.config/mise/config.toml
グローバル設定ファイルの例:
[tools]
node = "22"
pnpm = "latest"
typescript = "latest"
[settings]
legacy_version_file = true
plugin_autoupdate_last_check_duration = "24h"
プロジェクトのルートディレクトリに.mise.toml
ファイルを作成します:
# プロジェクトディレクトリで
notepad .mise.toml
プロジェクト設定ファイルの例:
[tools]
# プロジェクト固有のNode.jsバージョン
node = "18"
# 複数バージョンも指定可能
python = ["3.10", "3.11"]
[env]
# 環境変数の設定
NODE_ENV = "development"
DEBUG = "app:*"
[tasks]
# カスタムタスクの定義
dev = "npm run dev"
build = "npm run build"
test = "npm test"
複数の環境設定を一つのファイルで管理:
[env]
# 共通環境変数
PORT = "3000"
[env.development]
NODE_ENV = "development"
DEBUG = "app:*"
[env.production]
NODE_ENV = "production"
DEBUG = ""
[tasks]
# 異なる環境用のタスク
start.development = "nodemon server.js"
start.production = "node server.js"
特定のディレクトリに異なる設定を適用:
[tools]
node = "22"
[tools.api-service]
node = "18"
[tools.legacy-app]
node = "16"
- パフォーマンス改善: ツール読み込み速度が約30%向上
- プラグイン管理: 新しい
mise plugins
コマンドでプラグイン管理が簡単に - セットアップコマンド:
mise setup
コマンドでより簡単な初期設定が可能に - 拡張されたタスクシステム: 環境ごとに異なるタスク定義のサポート
- 旧バージョンマネージャーとの互換性強化: nvmやasdfからの移行がより簡単に
.tool-versions
ファイルは互換性のために引き続きサポートされていますが、新しいプロジェクトでは.mise.toml
の使用が推奨されていますMISE_xxx_VERSION
環境変数は将来的に廃止される可能性があります
症状: mise
コマンドが見つからない
解決方法:
# 環境変数PATHを確認
echo $env:PATH
# 必要に応じて手動でPATHに追加
$env:PATH += ";$env:USERPROFILE\AppData\Local\mise\shim"
# 永続的に設定するには
[Environment]::SetEnvironmentVariable("PATH", $env:PATH, "User")
症状: PowerShellでスクリプト実行ポリシーによるエラー
解決方法:
# 現在のポリシーを確認
Get-ExecutionPolicy
# 一時的にポリシーを変更して実行
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
# または永続的に変更(管理者権限が必要)
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
症状: Node.jsなどのツールのインストールが失敗する
解決方法:
# キャッシュをクリア
mise cache clear
# プラグインを更新
mise plugins update
# 手動でプラグインをアンインストールして再インストール
mise plugins uninstall node
mise plugins install node
症状: バージョンを切り替えても反映されない
解決方法:
# シェルの再初期化
mise deactivate
mise activate powershell | Out-String | Invoke-Expression
# シムの再構築
mise reshim
症状: インストールやダウンロードが遅い、または失敗する
解決方法:
- Windows Defenderの除外リストに
%USERPROFILE%\AppData\Local\mise
ディレクトリを追加 - ダウンロード中の一時的なスキャンを無効にする
PowerShellでのオートコンプリート設定:
# PowerShellプロファイルにコンプリート設定を追加
mise completions powershell >> $PROFILE
プロジェクトで定義したタスクの実行:
# タスク一覧を表示
mise tasks
# 定義したタスクを実行
mise run dev
mise run test
初めて使用するプロジェクトの設定ファイルを信頼:
# 現在のディレクトリの設定ファイルを信頼
mise trust
# 特定のディレクトリの設定ファイルを信頼
mise trust ~/projects/my-project
# インストール可能なNode.jsのバージョン一覧を表示
mise ls-remote node
# パターンにマッチするバージョンのみ表示
mise ls-remote node@18
miseはWindowsでのNode.jsバージョン管理を含む、複数の開発ツールを一括管理できる強力なツールです。
このガイドを通して、インストールから基本設定、Node.jsの管理、.mise.toml
による設定ファイルの活用、そしてトラブルシューティングまでを学びました。
この知識を活かして、複数のプロジェクトや開発環境を効率的に管理しましょう。