miseをWindows PCでインストール&有効化しようとするたびに「どの方法が一番いいんだっけ?」と悩むのが嫌なのでまとめました。
結論
-
PowerShell上で以下のコマンドを実行し、miseをインストール
winget install jdx.mise -
PowerShell上で以下のコマンドを実行し、ログインユーザーのPATH環境変数にmiseのshimsフォルダ(
%LOCALAPPDATA%\mise\shims)を追加[Environment]::SetEnvironmentVariable("Path", "$env:LOCALAPPDATA\mise\shims;" + [Environment]::GetEnvironmentVariable("Path", "User"), "User") -
PowerShellを再起動
(Visual Studio Code等のエディタやIDEを開いている場合は、それらも再起動)
補足:なぜこの方法を推奨するのか
一番インストールの手間が少なく、かつ「なぜかmiseが有効にならない!」というトラブルを避けられる方法であるためです。
公式ドキュメントのShimsのページによると、miseの有効化方法には以下の2つの方式があります。
-
PATHアクティベーション方式
- PowerShellの起動時スクリプトで
mise activateコマンドを実行し、miseを有効化する方式 - 常にPowerShell経由で動かすなら最適
- PowerShellではなく cmd.exe (コマンドプロンプト)経由でコマンドを実行する場合、miseでインストールしたツールが使えない。 Visual Studio Codeの拡張機能からツールを呼び出すのもこれに該当する場合がある
- PowerShellの起動時スクリプトで
-
shims方式(今回はこちらを使用)
- PATH環境変数にmiseのshimsフォルダ(
%LOCALAPPDATA%\mise\shims)を追加し、shimsフォルダ内の実行ファイル(exe)を叩けるようにすることで、miseを有効化する方式 - cmd.exe 経由でコマンドを実行する場合も対応可能 → 「なぜかmiseが有効にならない!」というトラブルを防げる
- miseでインストールしていない(mise管理外の)ツールやコマンドを実行した場合、mise.toml内で定義した環境変数は反映されない
- PATH環境変数にmiseのshimsフォルダ(
この2つのうち、公式で推奨されているのは1のPATHアクティベーション方式なのですが、この方式だとcmd.exeやVisual Studio Codeの拡張機能からコマンドを呼び出した場合にmiseでインストールしたツールが実行できない場合があり、トラブルの種になりがちです。
(例:mise経由でdenoをインストールしている場合、Visual Studio Codeのdeno拡張機能がdenoコマンドを見つけられずにエラーになる)
2のshims方式であれば、Windows上で動くほぼ全てのアプリケーションでmiseでインストールしたツールを呼び出せるようになるため、私は2のshims方式での有効化を推奨します。
※もし他にもっと良い方法があれば、コメントでご提案いただければ幸いです