asdf-plugin以外も使えるmise backendsの話
導入
asdf
便利だよね、って言っていたらrtx
っていうrust製のより素早い奴が出てきて、気がついたらmise
って名前になっていたmiseのバックエンドの話になります。mise便利!!って話やasdfからmiseへの移行やrtxからmiseへのマイグレーションのような話はよく見かけるけど、このバックエンドについてはそんなに見かけないので書いてみます。
mise backendsとは
そもそも、普段特別なことを意識しなくても使っているコマンド自体がasdfをバックエンドとするツールの導入を行っています。たとえば、以下はNeovimを導入するコマンドですが、内部的にはasdf-neovimというコミュニティ作成のasdfプラグインでNeovimが導入されます。プラグインはそのツールを導入するための手順が書かれたシェルスクリプトでできています。
$ mise use -g neovim
今回のネタはその他のバックエンドも実は使えるという話です。個別の話としては冒頭のmise backendsのリンクをご覧ください。なお、この機能は執筆時点(2024/07/21)では試験的な機能のため、有効にするコマンドを打って有効化する必要があります。以降はこれが有効化されているのを前提とします。
$ mise settings set experimental true
pipx backendの場合
pipx
は環境を汚さないようにpythonのCLIツールを入れるツール、というざっくりとしたイメージを持っている私ですが、このバックエンドを指定することでmiseからpipxでCLIツールを導入して管理できます。前提としてpipx自体がまず必要なので、miseで入れます。
$ mise use -g pipx
次に、httpieを入れてみましょう。以下のコマンドで導入できます。
$ mise use -g pipx:httpie
creating virtual environment...
creating shared libraries...
upgrading shared libraries...
installing httpie from spec 'httpie==3.2.3'...
done! ✨ 🌟 ✨
mise pipx:httpie@3.2.3 ✓ installed
mise ~/.config/mise/config.toml tools: pipx:httpie@3.2.3
無事入りました。mise current
で現在有効な導入済みランタイムのバージョンを見てみましょう。asdf以外のバックエンドで導入したツールにはバックエンド名:ツール名 バージョン
で記録されます。
$ mise current
pipx 1.6.0
pipx:httpie 3.2.3
miseの設定ファイルは~/.config/mise/config.toml
です。ここにも同じような形で記録されます。バージョンを指定しない導入をしたので"latest"
と表記されています。異なるバックエンドを使用するために有効化した試験機能を使用する設定もこのファイルに記載されます。このファイルをdotfiles
として持ち運ぶといろいろと捗りそうですね。
$ cat ~/.config/mise/config.toml
[tool]
pipx = "latest"
"pipx:httpie" = "latest"
[settings]
experimental = true
その他のバックエンド
記事公開時点で使用できるバックエンドは以下です。
- asdf
- cargo
- go
- npm
- pipx
- spm
- ubi
魅力
- miseから様々なCLIツールを一元管理できる(導入からアップデートも楽々)
- asdfプラグイン化されていないツールもバックエンド越しに導入・管理可能
おわりに
有名どころなツールは結構asdf-plugin化されている物が多く、普通に導入できたりしますが、そうじゃないツールは個別でそれぞれのバックエンドを通じて直接導入するような設定を書いていたのが、miseで一元管理できるようになるのはとてもハッピーなことだと思っています。バックエンドは更に増えそうな雰囲気をmiseのドキュメントページからは感じるので今後の発展にも期待します。
References
Discussion