今まで開発ツールのバージョンはNode.jsのみfnmで管理していました。業務でPHPのバージョン管理をする必要が出てきたため色々試していたところ、miseが良さそうです。
おもむろに~/.local/bin
以下にバイナリをダウンロードします。miseは流行りのRust製のユーティリティなのでワンバイナリです。またHomebrewパッケージやDebianリポジトリも用意されています。
シェルは最近はfishを使っているので、config.fishをこんな感じに。もちろんbashやzshなど他のシェルにもきちんと対応しています。
とりあえずバージョン管理するものの定番として、nodeを入れてみましょう。
同種のツールであるasdf用のプラグインがそのまま使えるので、いろいろ管理できます。
macOSだとPHPのビルドがちょっとでも古いと通らなくてつらい、という話は聞きますが、ひとまず業務で必要なのは7.4系までで、これはSonomaでもなんか色々やっていたらビルドが通ったので良しとします。
さらに現在はexperimental扱いですが、cargoやnpmでインストールするツール類まで管理できます。グローバルにインストールしたい物があるなら便利です。yarn 1系なんかはこれで入れておきたいですね。
asdfとの違いは?
同種のツールで以前からあるものとしてasdfがあり、こちらも広く使われています。実際バージョン管理用のファイルやプラグインに互換性があり、asdfからの置き換えを意識して作られたことが伺えます。
現時点での違いとしては、shimを使用しないためパフォーマンスが優れているらしいという点と、cargoやnpmでインストールするコマンドの管理ができるという点ぐらいですが、プラグインレジストリの管理などでasdfと方向性が異なるため、今後は少しずつ差が広がっていくのではないかと思っています。