mise.tomlに何を書けるのか把握したい
miseはプロジェクトで使うツールのバージョンや環境変数、タスクをmise.tomlという設定ファイルで管理する。mise.tomlには[tools]以外にもいくつかのセクションがあり、書ける内容やファイルの置き場所にはルールがある。
mise.tomlの主なセクション
[tools] ツールのバージョンを指定する
[tools]セクションには、プロジェクトで使うツールとバージョンを記述する。
[tools]
jq = "1.7.1"
node = "20"
具体的な追記方法は【mise】mise useでプロジェクトに使うツールのバージョンを設定する を参照。インストール方法は【mise】mise installで設定ファイルに書いたツールをインストールする を参照。
[env] 環境変数を設定する
[env]セクションには、そのディレクトリ配下で有効になる環境変数を記述する。
[env]
GREETING = "hello"
mise activateでシェルに組み込んでおくと、mise.tomlのあるディレクトリへ移動した際、GREETING環境変数が自動的に設定される。
[tasks] タスクを定義する
[tasks]セクションには、mise runで実行できるタスクを定義する。
[tasks.hello]
run = "echo $GREETING"
タスクの詳細な使い方は【mise】mise runでタスクを定義して実行する を参照。
[settings] miseの挙動を設定する
[settings]セクションには、mise自体の挙動を変更する設定を記述する。たとえばツールの並列インストール数を変更するには次のように書く。
[settings]
jobs = 4
ファイル名にはいくつかバリエーションがある
設定ファイルの名前はmise.tomlのほかに、次のようなバリエーションが使える。
mise.toml
.mise.toml
mise/config.toml
.mise/config.toml
.config/mise.toml
.config/mise/config.toml
いずれも同じ内容を書けるファイルで、機能に違いはない。設定ファイルをリポジトリのルートで目立たせたくない場合はドット始まりの.mise.tomlを、他の設定ファイルと同様に.config/配下にまとめたい場合は.config/mise/config.tomlを使うといった選び方ができる。
ディレクトリ階層のmise.tomlはマージされる
miseはカレントディレクトリから親ディレクトリへとさかのぼってmise.tomlを探し、見つかった設定を全てマージする。より深い階層の設定ほど優先度が高い。
project/
├── mise.toml [tools] jq = "1.7.1"
└── subdir/
└── mise.toml [tools] jq = "1.6"
subdirで有効なツールをmise config lsで確認すると、読み込まれている設定ファイルが階層順に並ぶ。
$ cd project/subdir
$ mise config ls
/path/to/project/mise.toml jq
/path/to/project/subdir/mise.toml jq
mise current jqで実際に有効なバージョンを確認すると、subdir/mise.tomlに書いた1.6が優先されている。
$ mise current jq
1.6
mise.local.tomlでローカル限定の設定を上書きする
mise.local.tomlは他のどのmise.tomlよりも優先度が高く、バージョン管理に含めない前提のファイルである。チーム全体で共有したくない個人設定を書くのに使う。
# mise.local.toml
[env]
GREETING = "hello from local"
mise.tomlにGREETING = "hello"と書いてあっても、mise.local.tomlがあればmise.local.tomlの値で上書きされる。
$ mise env | grep GREETING
export GREETING='hello from local'
mise.local.tomlはコミットしない前提のファイルなので、.gitignoreに追加しておく。
