🏜️

miseでパッケージマネージャの迷宮を渡り歩く

2024/12/21に公開

今年asdfからmiseに乗り換えて、速度もそうですが使い勝手に良さを感じました。

https://mise.jdx.dev/

globalで管理したいpackage/runtimeの定義は以下のように管理します。

~/.config/mise/config.toml
[tools]
bun = "latest"
deno = "latest"
node = "22"
python = "3.13"

ディレクトリ(Repository)の単位で閉じたい場合は以下のような mise.toml を中に作ります。

mise.toml
[tools]
node = "22"
"npm:pnpm" = "9.15"

mise.toml をcommitしてgitの管理対象にすることで、miseを使っている開発メンバーは mise install でruntime/package managerのバージョンをサクッと揃えることができます。いいね。

mise以外で管理されている場合(package.jsonにpackageManager (corepack)やvoltaのようなフィールドがある場合)でも...

npm

mise.toml
[tools]
node = {NODE_VERSION}

pnpm

mise.toml
[tools]
node = {NODE_VERSION}
"npm:pnpm" = {PNPM_VERSION}

yarn v4 (corepack)

mise.toml
[tools]
node = {NODE_VERSION}
"npm:corepack" = "latest"

これでなんとかなったりする。


mise.tomlをcommitしないならConfig Environmentsを参考に mise.local.toml mise.{MISE_ENV}.local.toml のようなファイルを作り、gitignoreにファイル名だけ書いておけば良い。

.gitignore
+ mise.local.toml
+ mise.*.local.toml
~/.config/git/ignore
+ mise.local.toml
+ mise.*.local.toml

コマンド周りはasdfっぽく叩けて一部asdf-pluginにも対応しており、元々asdfユーザだった自分が求めていたものと感じる。
MakefileのようなものをTasksで代替する日も近そうな雰囲気。今後もバリバリ使っていきたいツールです。

Discussion