Zenn
Closed22

nodeのバージョン管理にVoltaを使う@Windows11

えいきちえいきち

nvm-windowsにもちょっと飽きてきたので、Voltaを使ってみたい
やりたいことはnodeのバージョン管理
npmは、各nodeのバージョンにバンドルされているものでいい

えいきちえいきち

色々入れてみる

volta install node
volta install node@lts
volta install node@22
# 今日時点ではsuccess: installed and set node@22.13.1 (with npm@10.9.2) as default

volta install node@22.12.0
# 細かくバージョン指定も可能

volta install node@20
# 今日時点ではsuccess: installed and set node@20.18.2 (with npm@10.8.2) as default
えいきちえいきち

最後にインストールしたのが、defaultになるっぽい

>volta list all
⚡️ User toolchain:

    Node runtimes:
        v20.18.2 (default)
        v22.12.0
        v22.13.1

    Package managers:


    Packages:
えいきちえいきち

nvm use的なコマンドはない模様
volta install node@x.y.zですでにあるやつを指定すると、インストールはスキップされて、
インストールしたやつをデフォルトにするところだけ動かす(らしい)

https://zenn.dev/huuya/articles/e48d05f3681430
https://dev.classmethod.jp/articles/volta-set-default-version/

なので、

volta list node

    v20.18.2
    v22.12.0
    v22.13.1 (default)

volta install node@20.18.2

volta list node

    v20.18.2 (default)
    v22.12.0
    v22.13.1

的な感じにする必要がありそう

切り替えの時に管理者権限がいらないと嬉しい→未検証

えいきちえいきち

特定のnodeバージョンのアンインストールはコマンドではできない(クソ)

uninstallコマンドはvoltaにインストールしたパッケージをアンインストールするコマンド
nvm uninstallとは別物だった

> volta list node
⚡️ Node runtimes in your toolchain:

    v20.18.2
    v22.12.0
    v22.13.1 (default)

エクスプローラー・CMDなら
%LOCALAPPDATA%\Volta\tools\image\node\

Powershellなら
$env:LOCALAPPDATA\Volta\tools\image\node\

の中にある特定のバージョンのフォルダを消す

各フォルダの中身は↓

消してみる


消えた

参考
https://blog.70-10.net/posts/volta-uninstall-node/

えいきちえいきち

備忘

  • プロキシ下だとどうなるか
    • HTTP(S)_PROXYを見るらしい
  • Zscaler(ZPA, ZIA)があるとどうなるか
    • プロキシ通ってればダイジョブそう
  • インストール、切り替え時の管理者権限が必要か
    • シンボリックリンク張ってるので必要
えいきちえいきち

nodeのバージョン自動切換えを試す

現状

以下のようなフォルダ構成を用意

node-20/package.json

cd node-20
npm init
volta pin node@20
cd ../

node-21/package.json

cd node-21
npm init
volta pin node@21
cd ../

node-20に入る

cd node-20
volta list node

node -v
npm -v

node-21に入る

cd node-21
volta list node

node -v
npm -v

→pinしたときのバージョンに自動で切り替わってる

えいきちえいきち

package.jsonのvoltaセクションでメジャーバージョンだけ指定できる?
→できなかった

node-22用のフォルダを用意して初期化、pin

  "volta": {
    "node": "22.13.1"
  }

  "volta": {
    "node": "22" # ここをメジャーバージョンだけにしてみる
  }

この状態で、

volta list node

エラー

えいきちえいきち

バージョンにsemverっぽく書いてもダメ

  "volta": {
    "node": "^22.0.0"
  }

pinは結構あいまいでもできる

volta pin node@22
volta pin node@^22

lock的なものという理解をしておく

えいきちえいきち

nodeのバージョン管理だけに特化するならfnmのほうがよさそうな気がしてきた。


制作・著作
━━━━━
 ⓃⒽⓀ

えいきちえいきち

いったんvoltaをアンインストール
https://docs.volta.sh/advanced/uninstall

On Windows, Volta can be uninstalled by selecting it in the list at Start > Settings > Apps and choosing Uninstall.

👋

%LOCALAPPDATA%\Volta\tools\image\node\にはファイルが残るようなので、
%LOCALAPPDATA%\Voltaフォルダごと手動で消す。

👋👋👋

えいきちえいきち

追記
アンインストールしても、ユーザー環境数のPATHは消えていなかった

このスクラップは2ヶ月前にクローズされました
ログインするとコメントできます