20240115 001

開発ツールの管理はmiseが良さそう

2024年01月15日

今まで開発ツールのバージョンはNode.jsのみfnmで管理していました。業務でPHPのバージョン管理をする必要が出てきたため色々試していたところ、miseが良さそうです。


おもむろに~/.local/bin以下にバイナリをダウンロードします。miseは流行りのRust製のユーティリティなのでワンバイナリです。またHomebrewパッケージやDebianリポジトリも用意されています。

curl https://mise.jdx.dev/mise-latest-linux-x64 > ~/.local/bin/mise

シェルは最近はfishを使っているので、config.fishをこんな感じに。もちろんbashやzshなど他のシェルにもきちんと対応しています。

$HOME/.local/bin/mise activate fish | source
mise completion fish > $HOME/.config/fish/completions/mise.fish
fish_add_path --path --append $HOME/.local/share/mise/shims

とりあえずバージョン管理するものの定番として、nodeを入れてみましょう。

~                                       
 mise use node@lts --global
mise ~/.config/mise/config.toml tools: node@20.11.0
 
~
 which node
/home/lon/.local/share/mise/installs/node/lts/bin/node

同種のツールであるasdf用のプラグインがそのまま使えるので、いろいろ管理できます。

~
 mise use neovim@latest --global
mise ~/.config/mise/config.toml tools: neovim@0.9.5
 
~
 which nvim
/home/lon/.local/share/mise/installs/neovim/latest/bin/nvim
 
~
 mise use php@8.3 --global
mise ~/.config/mise/config.toml tools: php@8.3.1
 
~
 which php
/home/lon/.local/share/mise/installs/php/8.3/bin/php
 
~
 php -v
PHP 8.3.1 (cli) (built: Jan 15 2024 22:36:57) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.1, Copyright (c) Zend Technologies

macOSだとPHPのビルドがちょっとでも古いと通らなくてつらい、という話は聞きますが、ひとまず業務で必要なのは7.4系までで、これはSonomaでもなんか色々やっていたらビルドが通ったので良しとします。

さらに現在はexperimental扱いですが、cargoやnpmでインストールするツール類まで管理できます。グローバルにインストールしたい物があるなら便利です。yarn 1系なんかはこれで入れておきたいですね。

~
 mise use npm:yarn@1 --global
mise ~/.config/mise/config.toml tools: npm:yarn@1.22.21
 
~
 which yarn
/home/lon/.local/share/mise/installs/npm-yarn/1/bin/yarn
 
~
 mise use cargo:eza --global
mise ~/.config/mise/config.toml tools: cargo:eza@0.17.1
 
~
 which eza
/home/lon/.local/share/mise/installs/cargo-eza/latest/bin/eza

asdfとの違いは?

同種のツールで以前からあるものとしてasdfがあり、こちらも広く使われています。実際バージョン管理用のファイルやプラグインに互換性があり、asdfからの置き換えを意識して作られたことが伺えます。

現時点での違いとしては、shimを使用しないためパフォーマンスが優れているらしいという点と、cargoやnpmでインストールするコマンドの管理ができるという点ぐらいですが、プラグインレジストリの管理などでasdfと方向性が異なるため、今後は少しずつ差が広がっていくのではないかと思っています。