0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

miseをWindows環境でインストール&有効化する一番簡単な方法

0
Posted at

miseをWindows PCでインストール&有効化しようとするたびに「どの方法が一番いいんだっけ?」と悩むのが嫌なのでまとめました。

結論

  1. PowerShell上で以下のコマンドを実行し、miseをインストール

    winget install jdx.mise
    

     

  2. PowerShell上で以下のコマンドを実行し、ログインユーザーのPATH環境変数にmiseのshimsフォルダ(%LOCALAPPDATA%\mise\shims)を追加

    [Environment]::SetEnvironmentVariable("Path", "$env:LOCALAPPDATA\mise\shims;" + [Environment]::GetEnvironmentVariable("Path", "User"), "User")
    

     

  3. PowerShellを再起動
    (Visual Studio Code等のエディタやIDEを開いている場合は、それらも再起動)

補足:なぜこの方法を推奨するのか

一番インストールの手間が少なく、かつ「なぜかmiseが有効にならない!」というトラブルを避けられる方法であるためです。

公式ドキュメントのShimsのページによると、miseの有効化方法には以下の2つの方式があります。

  1. PATHアクティベーション方式
    • PowerShellの起動時スクリプトで mise activate コマンドを実行し、miseを有効化する方式
    • 常にPowerShell経由で動かすなら最適
    • PowerShellではなく cmd.exe (コマンドプロンプト)経由でコマンドを実行する場合、miseでインストールしたツールが使えない。 Visual Studio Codeの拡張機能からツールを呼び出すのもこれに該当する場合がある
  2. shims方式(今回はこちらを使用)
    • PATH環境変数にmiseのshimsフォルダ(%LOCALAPPDATA%\mise\shims)を追加し、shimsフォルダ内の実行ファイル(exe)を叩けるようにすることで、miseを有効化する方式
    • cmd.exe 経由でコマンドを実行する場合も対応可能 → 「なぜかmiseが有効にならない!」というトラブルを防げる
    • miseでインストールしていない(mise管理外の)ツールやコマンドを実行した場合、mise.toml内で定義した環境変数は反映されない

この2つのうち、公式で推奨されているのは1のPATHアクティベーション方式なのですが、この方式だとcmd.exeやVisual Studio Codeの拡張機能からコマンドを呼び出した場合にmiseでインストールしたツールが実行できない場合があり、トラブルの種になりがちです。
(例:mise経由でdenoをインストールしている場合、Visual Studio Codeのdeno拡張機能がdenoコマンドを見つけられずにエラーになる)

2のshims方式であれば、Windows上で動くほぼ全てのアプリケーションでmiseでインストールしたツールを呼び出せるようになるため、私は2のshims方式での有効化を推奨します。

※もし他にもっと良い方法があれば、コメントでご提案いただければ幸いです

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?