プロジェクトごとの環境変数をmise.tomlで管理したい

MISE_DATA_DIRのようなMISE_*環境変数はmise自体の動作を制御するものだが、mise setで設定するのはそれとは別に、プロジェクトで使う任意の環境変数である。mise.toml[env]セクションに書いておくと、mise activate済みのシェルやタスク実行時に自動的に反映される。

mise setで環境変数を設定する

KEY=VALUEの形式で環境変数を設定する。

$ mise set NODE_ENV=production

mise.toml[env]セクションに追記される。

[tools]
jq = "1.7.1"

[env]
NODE_ENV = "production"

キー名だけを指定すると、設定済みの値を確認できる。

$ mise set NODE_ENV
production

mise setで設定済みの環境変数を一覧表示する

引数なしで実行すると、設定済みの環境変数と、どの設定ファイルに書かれているかを一覧表示する。

$ mise set
NODE_ENV  production  /path/to/mise.toml

–stdinで複数行の値を設定する

パスワードや秘密鍵のような複数行の値は、--stdinで標準入力から読み込ませる。

$ printf "line1\nline2" | mise set --stdin MULTILINE_VAR
[env]
NODE_ENV = "production"
MULTILINE_VAR = """
line1
line2"""

–promptで対話的に入力する

値をコマンドライン上に直接書きたくない場合は、--promptで対話的に入力する。

$ mise set --prompt PASSWORD
Enter value for PASSWORD
>

-gでグローバル設定ファイルに書く

-g(--global)を付けると、プロジェクトのmise.tomlではなく~/.config/mise/config.tomlに書き込まれ、プロジェクトを問わず使える環境変数になる。

$ mise set -g GLOBAL_VAR=hello
[env]
GLOBAL_VAR = "hello"