これまでasdfでpythonやnodejsのランタイムのバージョン管理、 direnvを使ってディレクトリごとの環境変数管理をしていましたが、 最近になってmiseといういい感じそうなバージョン管理ツールを見つけたのでインストールしてみようと思います。
asdf・direnvのアンインストール#
自分はhomebrewでインストールしていたので、brew uninstallでアンインストールしました。
brew uninstall asdf direnv
brew autoremovemiseのインストール#
miseのGetting Startedそのままの手順でいけそうです。
オプショナルな設定など、詳細は公式のほうが詳しいです。
curl https://mise.jdx.dev/install.sh | sh.zshrcにパスを追加します
eval "$(~/.local/bin/mise activate zsh)"
export PATH="$HOME/.local/share/mise/shims:$PATH"ターミナルを再起動するとmiseコマンドが使えるようになっています。動作確認します。
mise -V出力:
2024.1.12 macos-arm64 (3750934 2024-01-07)いい感じですね。
miseを使う#
早速使ってみます。
miseには以下の2種類の機能があります。
- ランタイムのバージョン管理
- ディレクトリごとの環境変数管理
どちらも便利そうなので試してみます。
ランタイムのバージョン管理#
まずはnodejsの20系をインストールします。
mise use --global node@20
node -v出力:
v20.10.0うーんいい感じ。メジャーバージョンだけ指定すれば勝手にインストールしてくれるのは嬉しい。
ちなみに.tool-versionsのあるディレクトリでmise useを実行すると、指定されたバージョンがない場合は自動でインストールしてくれました。
ディレクトリごとの環境変数管理#
次にディレクトリごとの環境変数管理を試してみます。
direnvとは違い、.envrcではなく.mise.tomlというファイルを作るようです。(.envrcを使う方法・設定もありますが割愛します)
適当なディレクトリに入り、.mise.tomlを作成します。
[env]
HELLO = "WORLD"有効化するには、direnvのdirenv allowと同様にmise trustを実行する必要があるようです。
mise trust出力:
mise trusted /Users/sh1ma/tmp/.mise.tomlmise envで環境変数を表示できます。
mise env | grep HELLO出力:
export HELLO=WORLDecho $HELLO出力:
WORLD良さそうですね。
まとめ#
asdfとdirenvに不満は感じていなかったのですが、2つのツールを使っていたところを1つにまとめられてスッキリした気がします。
あ、ホームディレクトリの.gitignoreに.mise.tomlの追加を忘れないようにしなきゃ。