mise
#rtx #asdf-vm #direnv #npm #aqua #ubi #slsa-verifier #Cosign #vfox
概要
mise (旧rtx)は様々な言語/ツールのバージョン管理などをサポートするツールです
Node.js/Deno/Bun/Go/Ruby/Python/Java/Erlangあたりのランタイムについてはmiseによって公式にサポートが提供されています (コアプラグイン)
asdf(asdf-vm)と互換性があり、miseが直接サポートしない言語/ツールについてはasdfプラグインを入れることで管理が可能です
インストール
インストーラー
code:shell
$ curl https://mise.run | sh
インストール先はMISE_INSTALL_PATH環境変数によってカスタマイズ可能です (デフォルトは$HOME/.local/bin/mise)
code:shell
# 例) インストール先を$HOME/binに変更する
$ export MISE_INSTALL_PATH=$HOME/bin/mise
Homebrew
$ brew install mise
セットアップ
activate
必要に応じてmise activate <shell名>を実行する処理をシェルの設定ファイルに書き込みます
code:shell
$ echo 'eval "$(~/.local/bin/mise activate zsh)"' >> ~/.zshrc
シェルを再起動した後、以下のコマンドを実行してactivated: yesが表示されれば有効化に成功しています
code:shell
$ mise doctor
コマンド
バージョンの確認
$ mise version
ツールのインストール/有効化
code:shell
# mise use <ツール名>@<バージョン>
# --globalオプションはasdfにおけるasdf globalコマンド相当の振る舞いをしてくれます
$ mise use --global node@20.12.2
# 指定したバージョンのNode.jsがインストールされている
$ node --version v20.11.0
インストールされたツールの一覧表示
code:shell
# Node.jsの一覧を表示
$ mise list node
# Denoの一覧を表示
$ mise list deno
ツールのアンインストール
code:shell
# 例) Deno v1.42.1をアンインストールします
$ mise uninstall deno@1.42.1
mise本体のアップデート
code:shell
# デフォルトではmise本体に加えて各asdfプラグインもアップデートされます
# もしasdfプラグインはアップデートしたくない場合は--no-pluginsオプションを指定します
$ mise self-update
ツールの特定のバージョンを実行
code:shell
$ mise exec deno@2.2.2 -- deno -v
deno 2.2.2
$ mise exec deno@2.2.3 -- deno -v
deno 2.2.3
コアプラグイン
いくつかの言語やツールについてはmise本体にコアプラグインとして組み込まれています (mise plugins ls --coreでコアプラグインの一覧を表示できます)
Deno
code:shell
$ mise use --global deno@1.42.4
GitHub Releasesからダウンロードされます (src/plugins/core/deno.rs)
Bun
code:shell
$ mise use --global bun@1.1.4
GitHub Releasesからダウンロードされます (src/plugins/core/bun.rs)
Node.js
$ mise use --global node@20.12.2
Go
https://dl.google.com/goからダウンロードされるようです (src/config/settings.rs#L53)
Ruby
ruby-installまたはruby-build経由でインストールされるようです (src/plugins/core/ruby.rs)
Java
$ mise use --global java@temurin-22.0.0+36
Erlang
kerl経由でインストールされるようです (src/plugins/core/erlang.rs)
バックエンド
miseには各種パッケージマネージャーを利用してツールを管理する機能があります
asdfバックエンド
miseのコアプラグインとしてサポートされていないツールについては、asdf-vmのプラグインを使って管理することもできます
mise useなどの実行時に該当のツールを管理するasdf-vmプラグインがまだ導入されていなければ、自動でインストールされます
例えば、以下を実行すると、asdf-babashkaプラグインを使ってBabashkaがインストールされます
code:shell
$ mise use --global babashka@1.3.190
$ bb --version
babashka v1.3.190
mise-plugins/registryリポジトリではmise向けにasdf-vmプラグインの短縮名の一覧が管理されています (追記 - mise-plugins/registryはmise本体のリポジトリへ統合されたようです ())
/icons/hr.icon
npmバックエンド
npm (またはBun)経由でインストールできるツールを管理できます
例) pnpmをインストールする
code:shell
# pnpm v10をインストール
$ mise use -g npm:pnpm@latest-10
# インストールされたpnpmの一覧を表示します
$ mise list npm:pnpm
aquaバックエンド
aquaのレジストリを活用して、ツールをインストールする機能も提供されています (活用されているのはレジストリのみでaquaには依存していません)
aquaと同様にcosignやslsa-verifierによる検証もサポートされているようです
これらを利用するには、あらかじめこれらツールを導入しておく必要があるようです ()
code:shell
$ mise use -g slsa-verifier cosign
$ mise tool slsa-verifier
Backend: ubi:slsa-framework/slsa-verifier
...
$ mise tool cosign
Backend: aqua:sigstore/cosign
...
例) sheldonをインストールする
code:shell
$ mise use -g aqua:rossmacarthur/sheldon@0.8.1
/icons/hr.icon
ubiバックエンド
設定ファイル
miseの設定ファイルでTOML形式で記述します
mise本体に関する設定や使用するツールのバージョン, asdf-vmプラグインに関する設定, 環境変数などを設定できます
グローバルな設定は~/.config/mise/config.tomlに配置します
mise use --global <tool>@<version>を実行すると、デフォルトでこのファイルに設定が書き込まれているようです
プロジェクトローカルな設定は、プロジェクトのルートディレクトリに.mise.local.tomlや.mise.$MISE_ENV.toml, .mise.tomlなどの名前で配置できます (プロジェクトローカルな設定はグローバルな設定よりも優先されます)
asdf-vmにおける.tool-versionsもサポートされています
/icons/hr.icon
リンク
mise (旧 rtx) で脱 node-build (asdf)
mise(rtx)を対話的シェル以外で使うなら大人しくshimsにPATH通した方がいい - Acme::AnaTofuZ->new;