自分は処理系管理にmiseを使っている。
miseはASDFの精神的後継?みたいなツールで、シェルスクリプトではなくRustで書かれていたり、シンボリックリンクを回避してPATHを変更するなどのテクニックによって高速に動作するのが売りだ。
今回、ちょっとした用事でNode.js v22を使うことになった。しかしNode 22はまだリリースされていなくて、利用するにはnightly buildを利用しなければならない。
miseで使えるnodeバージョンを出力するにはmise list-all node
すれば良いのだが、当然nightly buildはここには載っておらず、正式にリリースしたものしか候補に出てこない。
% mise -v 2024.4.5 linux-x64 (d60d850 2024-04-15) % mise list-all node ... 21.7.0 21.7.1 21.7.2 21.7.3 # 22は出てこない
困り果てて色々調べたところ、以下のようにすればよいことがわかった(mise 2024.4.5での話なので、将来的にもっと良くなるかも):
まずローカルにnodejsのビルドをダウンロードしてくる。今回は~/.nodes/22
にインストールした:
# (x64 linux向けのアーティファクトをDLしている) % wget https://nodejs.org/download/nightly/v22.0.0-nightly2024041887abd023aa/node-v22.0.0-nightly2024041887abd023aa-linux-x64.tar.xz % tar axvf node-v22.0.0-nightly2024041887abd023aa-linux-x64.tar.xz % mv node-v22.0.0-nightly2024041887abd023aa-linux-x64 ~/.nodes/22
次に、そのnode実装を利用したいディレクトリで.mise.toml
を作成する:
[tools] node = ['path:/home/windymelt/.nodes/22']
node =
に続いて、配列の中に'path:パス'
の形でインストール先を指定する。このとき、相対パスではなく絶対パスを使うのが重要なポイント。現時点では相対パスを使うと動作しない(これがわからずにDiscordに相談に行くはめになった)。
あとはmise reshim
すると動作するはず。場合によってはmise trust
する必要があるかも。
% mise reshim % node -v v22.0.0-nightly2024041887abd023aa
やったー。
自分の環境ではasdf-nodejs
を内部的に使う設定にしていたけど、そのままのmiseでもたぶん動作すると思う。
If you want to use asdf-nodejs then run mise plugins install node https://github.com/asdf-vm/asdf-nodejs