🇫🇷

anyenvからmise(rtx)に移行する

2024/01/04に公開

今回は、anyenvからmiseという開発環境のセットアップツールに移行したので、その手順についてまとめます。

mise (rtx) とは

https://mise.jdx.dev/

The front-end to your dev env.

と書いてて、最初「フロントエンド環境をととのえるツールなのかな?」と思ったら違いました。

miseは、anyenvのような各実行環境のバージョン管理や、direnvの環境変数管理、さらには make のようなタスクランナーの機能も提供する、開発環境全般のセットアップツールです。

Rustで書かれている点にも注目ですが、asdfとは違ってshimsを使わずPATHを直接更新するという設計[1]にすることで、パフォーマンスも期待できます。

anyenv のアンインストール

それでは、まずは共存しないようにanyenvをアンインストールしましょう。
以下の手順でアンインストールしていきます。

  1. anyenvで利用していた**envを削除
  2. .anyenv/ ディレクトリを削除
  3. anyenv自体をアンインストール
  4. 起動時実行のファイルにかかれているコードを削除

順番にかるく説明します。

anyenvで利用していた**envを削除

anyenv envs で導入している**envをリストアップし、anyenv uninstall -f **env で削除します。

.anyenv/ ディレクトリを削除

筆者の場合、anyenvで利用していたファイルは ~/.anyenv に置かれていたので、そちらのディレクトリを削除します。

rm -rf ~/.anyenv/

anyenv 自体をアンインストール

Homebrewでインストールしていたため、 brew uninstall anyenv のみで完了です。

起動時実行のファイルにかかれているコードを削除

anyenvを最初に導入している場合、 PATHの設定とanyenvの初期化コードが .zshrc などに書いていると思います。
筆者の場合は、以下のようなコードが書かれていました。

~/.zshrc
- export PATH="$HOME/.anyenv/bin:$PATH"
- eval "$(anyenv init -)"

mise を導入する

miseのGetting Startedをはじめていきましょう。

環境については以下のとおりです。

  • PC: M1 MacBook Pro (2021)
  • OS: MacOS Sonoma 14.1.1
  • Command Shell: zsh

インストール

Mac OSなので、Homebrewでさくっとインストールします。

$ brew install mise

ターミナルで mise -V を実行し、バージョンを確認しつつ動作確認をしてみましょう。

$ mise -V
2024.1.4 macos-arm64 (2024-01-04)

これでインストールは完了です。

Activateコマンドの追記

Getting StartedのShells項目にあるとおり、 anyenvよろしくActivateコマンドを追記する必要があります。

今回はzshなので、以下のコマンドを実行して ~/.zshrc に追記します。

$ echo 'eval "$(mise activate zsh)"' >> "${ZDOTDIR-$HOME}/.zshrc"

ここまでで、 mise install で導入した実行環境が利用できるようになっていると思います。

実行環境のインストール - Node.js

まずは、試しにNode.jsをグローバル設定で導入してみましょう。
バージョンは v20.10.0 を指定します。

$ mise install node@20.10.0  
mise node@20.10.0 ✓ installed 
$ mise use --global node@20.10.0 
mise ~/.config/mise/config.toml tools: node@20.10.0

node -v で、実際に入ってるNode.jsのバージョンを確認します。 v20.10.0 が入っていれば完了です。

$ node -v
v20.10.0

さいごに

現状はインストールしただけなのでなんとも言えないですが、 .node-version があるディレクトリで node -v などをしてみると、対応するNode.jsのバージョンをインストールしてくれたりするので、多数のプロジェクトをまたぐ場合の体験はさらによくなっていそうです。

asdfからの移行ではないので驚きは少ないですが、使用感はあまり変わりないので引き続き使ってみようと思います。

direnv | miseにもあるように、direnvの互換を目指す予定[2]もあります。
どんどん便利になりそうなので、これから使いつつ、今後のアップデートにも期待しています。

脚注
  1. https://mise.jdx.dev/comparison-to-asdf.html#performance ↩︎

  2. https://mise.jdx.dev/direnv.html ↩︎

Discussion