mise で asdf のような開発言語のバージョン管理と direnv のようなディレクトリごとの環境変数の適用を行う
node.jsmise (ミーズ) は asdf と direnv とタスクランナーを合わせたツール。Rust製。
$ brew install mise
$ mise --version
_ __
____ ___ (_)_______ ___ ____ ____ / /___ _________
/ __ `__ \/ / ___/ _ \______/ _ \/ __ \______/ __ \/ / __ `/ ___/ _ \
/ / / / / / (__ ) __/_____/ __/ / / /_____/ /_/ / / /_/ / /__/ __/
/_/ /_/ /_/_/____/\___/ \___/_/ /_/ / .___/_/\__,_/\___/\___/
/_/ by @jdx
2025.7.4 macos-arm64 (2025-07-11)
node をインストールしてみる。なお asdf のプラグインが利用できる。
$ mise use --global node@22
mise WARN gpg not found, skipping verification
mise [email protected] ✓ installed mise ~/.config/mise/config.toml tools: [email protected]
$ cat ~/.config/mise/config.toml
[tools]
node = "22"
$ mise exec -- node --version
v22.17.0
mise activate すると環境変数が更新される。
$ which node
/usr/local/bin/node
$ echo 'eval "$(mise activate zsh)"' >> ~/.zshrc
$ source ~/.zshrc
$ mise env
export PATH='/Users/sambaiz/.local/share/mise/installs/node/22.17.0/bin:...'
$ which node
/Users/sambaiz/.local/share/mise/installs/node/22.17.0/bin/node
プロジェクトのディレクトリに設定ファイルを置くと親の設定とマージされる。
$ cat mise.toml
[tools]
node = "18"
[env]
xxx = "yyy"
[tasks.build]
description = "Build"
run = "go build main.go"
$ mise i
mise [email protected] ✓ installed
$ node --version
v18.20.8
$ echo $xxx
yyy
$ mise run build
[build] $ go build main.go
mise.${MISE_ENV}.toml で環境ごとの設定を記述することもできる。
$ cat mise.prd.toml
[env]
aaa = "bbb"
$ MISE_ENV=dev mise env | grep aaa
$ MISE_ENV=prd mise env | grep aaa
export aaa=bbb