mise とは
mise を使用した開発ツールの管理についておさらいしてみた | DevelopersIO
- 開発ツールの管理や環境変数、makeのようなタスク管理ができる
- 特にnodenv などのようにプロジェクトごとにバージョンを管理できるのが便利
- Flutter も mise で管理できる
- renovate も問題なく動く
FVM 辞める理由
- 今まで node や ruby version は anyenv で管理していたが mise に寄せた
- 各種 env を入れることなく mise i で全て解決できて便利
- mise を使うと cocoapods などのバージョンも .mise.toml で固定できる
- Flutter も .mise.toml で指定できるので、もう全て mise に寄せるのが楽となった
- FVM はバージョンを上げた後 vscode がうまく認識してくれなくて再起動が必要だったりハマることが多々あった
- コマンドも頭に fvm ってつけるのが面倒だが mise だと普通にコマンドを実行できる
移行手順
- .fvmrc を削除
$ mise use flutter@x.x.x- .mise.toml が作られる
- .vscode/settings.json の dart.flutterSdkPath を更新
- 例:
"dart.flutterSdkPath": "~/.local/share/mise/installs/flutter/3.35.1-stable" - fvm は自動でここを変更してくれたけど、 mise は手動で変更する必要がある
- 例:
以上!
手元のプロジェクトでは node や cocoapods も使うので .mise.toml は以下になった
[tools] flutter = "3.35.1" node = "24.6.0" ruby = "3.3.8" cocoapods = "1.16.2"
Github Actions
Github Actions で flutter analyze や flutter test を実行している。その際は mise の action を使える。mise-action を使うだけでいい。CIではflutterしか利用しないので install_args で flutter を指定することで flutter のみの install となる。(node や ruby は install されない)
- name: Setup mise
uses: jdx/mise-action@v3
with:
install_args: flutter
Renovate
renovate を使っている場合、 mise は renovate に対応しているので簡単に利用できる。 enabledManagers": ["pub", "mise"] に指定することで、.mise.toml に指定したバージョンの更新があれば通知してくれる。
おわり
mise を入れておくだけで簡単に node や ruby もバージョンが整うので体験が良い。
個人開発で複数Project共通で使っている script は ~/.config/mise/tasks に置いたので、複数プロジェクトで script を共有しやすくなった。
手元で使う系のツールも、今まで npm -g とかで入れてたやつも mise で管理するようになった。
今は global の config.toml はこんな感じになっている。
[settings] idiomatic_version_file_enable_tools = ["ruby", "node"] [tools] cocoapods = "latest" node = "22" "npm:@anthropic-ai/claude-code" = "latest" "npm:firebase-tools" = "latest" uv = "latest"