開発環境と本番環境でツールのバージョンや環境変数を切り替えたい

同じプロジェクトでも、開発環境と本番環境で使うツールのバージョンや環境変数を変えたい場合がある。環境変数MISE_ENVを指定すると、mise.<環境名>.tomlという命名の設定ファイルを追加で読み込ませられる。

MISE_ENVの基本

mise.tomlに加えて、mise.production.tomlのような環境別のファイルを用意する。

# mise.toml
[tools]
jq = "1.7.1"

[env]
STAGE = "base"
# mise.production.toml
[tools]
jq = "1.6"

[env]
STAGE = "production"

MISE_ENVを指定しない場合、mise.tomlだけが読み込まれる。

$ mise current jq
1.7.1

$ mise env | grep STAGE
export STAGE=base

MISE_ENV=productionを指定すると、mise.production.tomlmise.tomlに追加でマージされ、両方に書かれた項目はmise.production.tomlの値が優先される。

$ MISE_ENV=production mise current jq
1.6

$ MISE_ENV=production mise env | grep STAGE
export STAGE=production

–envフラグでも同じ環境を指定できる

MISE_ENV環境変数の代わりに、--env(-E)フラグでも同じ環境を指定できる。

$ mise --env production current jq
1.6

存在しない環境名を指定してもエラーにならない

MISE_ENVに対応するmise.<環境名>.tomlが存在しない場合、そのファイルは無視されmise.tomlだけが読み込まれる。

$ MISE_ENV=staging mise current jq
1.7.1