読み方はmeez
。
pyenv
のようなランタイムバージョン管理は他の言語にもあるのだが、それらをまとめて管理するもの。
また、ディレクトリごとの環境変数も管理できる。他にも必要ツールのインストールとか、タスクランナーとか全部これで出来る。
ちなみにrust製。
シンプル解説。
asdf, direnvをやめてmiseに移行する
導入。windowsならgithubから入れろとあるが、cargoで入れられるのでそっちの方が早いかも。ビルドからになるが。
最近scoopに対応しはじめた。
mise ではじめる開発環境構築
そこまで一気にやるならdockerでいいじゃんというのはあるが、docker外で管理したいものを管理するときに使える。
今のところ(2024/10/28)windowsのサポートは最小限。
ディレクトリごと環境変数を使わず言語の管理ツールまとめとして使うくらいなら、言語ごとの最適な管理ツールを使ったほうが早い気がする。なので普段使ってない。
Windowsからだとcargoかnpmが一番早いが、結局Rustかnodejsを入れることになり、それらはScoopで入れると考えると、scoop → rust → cargo → mise → uv → python みたいな大分長いチェーンが予想される。面倒。
- scoopがサポートされ始めたので、ここは克服され使い始めた
powershellやgitなど、いくつかの開発ツールも管理可能。
でもツールまとめならScoopとかwingetとかあるし……開発ツールだけmiseに分けたいかと言われると。
- 厳格なバージョン管理が強み
- そのせいで若干問題が出る
外部ツールはasdfのものが使えるから何でもできるのだが、miseはそもそもそういうプラグインに厳格らしい。
あとURL指定より必要になった時に自動で用意するLazy Install方式が推奨。
そうでなければaqua使えというのが今(2024/12/06)のスタンス。
mise-plugins · GitHub
なんかaqua使用、miseから直接いけるっぽい。
ならええか。
結局厳格なバージョン管理が必要な時にしか必要じゃない。
今はjavaくらいにしか使ってない。pythonは仮想環境がほぼ必須な関係上uvでだいたい何とかなる。
plugins
開発に使えるものをpluginsとしてインストールできる。
cmakeとか。goなどのバージョン管理もpluginsとして扱う。
pluginsはインストール用とバージョン確認用のシェルスクリプトがセットになったもの。
ツールそのものではない。
どういうpluginsがあるかはmise plugins ls-remote
。
既に手元にあるpluginsの確認はmise ls
。
バージョン確認はmise ls-remote プラグイン名
。
インストールはmise install プラグイン名
。バージョン指定はプラグイン名@バージョン
。指定が無いと直下のmise.toml
が優先される。
その他、標準でリストに無いpluginsはmise registry
で確認。
ここにも載っていないpluginsとしてasdfのpluginsも使える。
use
toolをインストールしconfig.tomlに書き込む。
-g
を指定するとグローバルにインストール可能。~.config\mise\config.toml
。mise config ls
でパス確認。
toolの検索はmise registry
。
toolバージョン検索はmise ls-remote
。
インストールしたtoolはmise ls
。
gツールの実体は~\AppData\Local\mise\installs
。各パスはmise bin-paths
で確認。
実体の位置を変更したい場合は環境変数MISE_DATA_DIR
を変更。
反映には再起動するのが早そう。
rustは is not compatible with the version of Windows
というのが出たのでちょっと待つ。
uninstallするとconfig.tomlに残ってたりしがち。
pruneで消せる?
アンストはmise use --remove tool名
でコンフィグファイルから消してからmise uninstall tool名
。uninstallだけだとmiseの次回起動時に一気に再インストールされてしまう。
また、removeは複数tool指定が出来ない? 一個一個やらないと認識されなかった。
いろんなバックエンドからインストール用の設定ファイルを読んでいる。
一覧を見たいならmise backend ls
。
install
ツールをインストールし~/.local/share/mise/installs/<PLUGIN>/<VERSION>
に入れる。
PATHを追加しないためそのままでは使えない。あとmise.tomlに書き込まない。そうしたいならuseを使う。
miseは同じ起動コマンドの別バージョンをインストールすることもあり、useだとインストールした別バージョンを起動コマンドに接続するまでやってしまう。
そういうときのコマンドだろうか。わからん。
exec
ツールをコンフィグファイルに書き込むことなく実行する。
別アプリから呼べないときなど、mise exec -- アプリ名
でよく応急処置する。
環境変数に出ない
reshim
でshimを作り、手動で登録。上手くいかないならもう一回reshim
。
たいていは上手くいくが別のアプリから呼び出そうとするとよくエラーになる。