公開日: 2025年2月28日

【JavaScript】 NVS で Node.js のバージョンを管理する

諸事情により JavaScript を学習することになりましたので、実行環境である Node.js およびそのバージョン管理ツール「NVS」のインストール方法と使いかたを記録しておきます。なお、ここでは Windows 11 & PowerShell 7 での使用を前提とします。

関連記事:

NVS の良い点・悪い点

Volta と使い比べたりして感じた NVS の印象:

  • [O] インストール先を選べる (git clone の場合)
  • [O] インストールが簡単 (winget の場合)
  • [X] (Volta と比べて) 遅い
  • [X] (Volta と比べて) コマンド体系がわかりにくい
  • [?] 開発は (Volta と比べて) スローペース

(こう書くと「なんか NVS だめじゃん」みたいな印象になってしまいそうですが、この手のツールを 5 種類くらい試した中では好感触であったことを申し添えておきます)

インストール先を選べる (git clone の場合)

NVS を公式リポジトリからgit cloneすることで、任意のフォルダにインストールすることができます (手順は後述)。Volta のほうは、私が調べたかぎり Windows ではインストール先を指定することができず、その点が不満でした。

インストールが簡単 (winget の場合)

winget を使えば、次のように簡単にインストールすることができます。ただ、インストール先を選ぶことはできないようです。

PS> winget install jasongin.nvs

(Volta と比べて) 遅い

使用する Node.js のバージョンを切り換えるときに若干の遅延を感じます。特に、後述するauto onを設定してあると、プロジェクトのルートフォルダにcdしただけで一瞬無応答になるのでけっこうストレスを感じます。

(Volta と比べて) コマンド体系がわかりにくい

NVS では、Node.js のバージョンを切り換えるのにnvs useコマンドを使いますが、この設定はシェルを再起動するとリセットされてしまいます。次回も同じバージョンがデフォルトで選択されるようにするにはnvs linkコマンドを実行する必要があります。なぜ「link」というコマンド名なのかはドキュメントを読むと理解できるんですが、直感的ではないと感じます。他にも「nvs auto onnvs autoは何がちがうの?」など、Volta と比べるとコマンド体系がわかりづらいように思いました。

開発は (Volta と比べて) スローペース

個人的にはあまり気になりませんが、Volta と比べると開発はスローペースな感じです。「ちゃんとメンテナンスされるのかな」という不安感をユーザーに与えてしまうかもしれません。

NVS のインストールとアンインストール

ここでは、git cloneによるインストールを行います。winget でインストールする方法に比べて手間はかかりますが、インストール先を選ぶことができます。git コマンドへのパスが通っていなければ、事前に通しておいてください。なお、手順はおおむね公式ドキュメントにしたがっています。

  1. インストール先フォルダを NVS_HOME にセットする。
    PS> $env:NVS_HOME="$env:HOME\.nvs"
    
  2. git cloneする。
    PS> git clone https://github.com/jasongin/nvs "$env:NVS_HOME"
    
  3. installコマンドを実行する…とエラーが表示される。
    PS> . "$env:NVS_HOME\nvs.ps1" install
    ...
    NVS_HOME is not under a well-known user or system directory. Set the "linkToSystem" property in settings.json to true or false to specify whether NVS should link to into system directories.
    
  4. メッセージにしたがって settings.json を編集する。
    settings.json (差分)
     {
            "aliases": {},
    +       "linkToSystem": false,
            "remotes": {
                    "default": "node",
                    "node": "https://nodejs.org/dist/"
    
    ※ おそらく今回のインストール先がシステムフォルダではなくユーザーフォルダなために必要な設定だと思われます (README の「System linking」 参照)。
  5. 再度installコマンドを実行し、無事に完了したらバージョン確認。
    PS> . "$env:NVS_HOME\nvs.ps1" install
    PS> nvs --version
    1.7.1
    
    このコマンドの結果、環境変数 PATH に NVS_HOME へのパスが追加され、nvsコマンドへのパスが通ります。

アンインストールに関しては公式ドキュメントにはまとまった記載がありませんが、おそらく次の手順になると思われます。

  1. NVS が追加したユーザープロファイルや環境変数をnvs uninstallコマンドで削除する。
    PS> nvs uninstall
    
  2. git cloneしたフォルダを削除する。

NVS の使いかた

使用頻度が比較的高いであろうコマンドの使いかたをメモしておきます。

nvs add

Node.js のダウンロードを行います。ダウンロード先は $env:NVS_HOME\node です。

特定のバージョンをインストールする:

PS> nvs add 12.22.12

最新の LTS (Long Term Support) バージョンをインストールする:

PS> nvs add lts

ダウンロードした Node.js のバージョンはnvs lsで確認できます。

> nvs ls
  node/22.13.1/x64 (Jod)
  node/12.22.12/x64 (Erbium)

この時点ではまだ Node.js は実行できません。実行するには次のnvs useコマンドを使います。

nvs use

使用する Node.js のバージョンを切り換えます。切り換わったバージョンに応じてシェルの PATH が更新されます。

特定のバージョンに切り換える:

PS> nvs use 12.22.12
PS> node -v
v12.22.12

nvs lsで確認すると、選択したバージョンの先頭に「>」が付きます。

PS> nvs ls
  node/22.13.1/x64 (Jod)
 >node/12.22.12/x64 (Erbium)

最新の LTS バージョンに切り換える:

PS> nvs use lts
PS> node -v
v22.13.1
PS> nvs ls
 >node/22.13.1/x64 (Jod)
  node/12.22.12/x64 (Erbium)

nvs useコマンドで更新した PATH の値は、シェルを再起動するとリセットされてしまいます。恒久的にセットするには、次のnvs linkコマンドを使います。

このコマンドは、指定されたバージョンの Node.js を "default" として参照できるようにシンボリックリンクを張るとともに、そのパス (NVS_HOME\default) をユーザー環境変数 PATH に追加します。

PS> nvs link 22.13.1
d:\mijinco\.nvs\default -> d:\mijinco\.nvs\node\22.13.1\x64
User profile PATH += d:\mijinco\.nvs\default
PS> nvs use default
PS> node -v
v22.13.1

"default" からリンクされているバージョンは、先頭に「#」が付きます。

PS> nvs ls
>#node/22.13.1/x64 (Jod)
  node/12.22.12/x64 (Erbium)

これで、シェルを起動し直してもデフォルトで v22.13.1 が選択されるようになりました。リンクを解除したいときはnvs unlinkを使います。

PS> nvs unlink
PS> nvs ls
  node/22.13.1/x64 (Jod)
  node/12.22.12/x64 (Erbium)

nvs auto on

nvs auto onを実行すると、それ以降、cdしたときに .node-version に書かれているバージョンに自動的に切り換えてくれます。

PS> cd myproject
PS> node -v
v22.13.1
PS> node -v > .node-version
PS> cd ..
PS> nvs use 18.20.6
PS> node -v
v18.20.6
PS> nvs auto on
PS> cd myproject
PS> node -v
v22.13.1

ところで、シェルを再起動するとnvs auto onの設定はリセットされてしまいます。シェルの起動時からauto onの状態にするには rc 系のファイルに書いておく必要がありそうです。

例えば PowerShell なら $profile に次のように書きます(もし「$profile が存在しない」といわれたら %userprofile%\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 を新規作成します)。

Microsoft.PowerShell_profile.ps1
if (Get-Command "nvs" -ea SilentlyContinue) {
    & nvs auto on
}

このあたりは Volta と比べると相当面倒くさい感じがします。でももしかしたら「ツール側ではユーザーの環境を勝手にいじったりしないから、やりたきゃ自分でやってね」というポリシーなのかもしれません。なお、auto on状態を解除するにはnvs auto offコマンドを実行します。

nvs auto

nvs autoon/offパラメーターなしで実行すると、cdしたときではなく、このコマンドを実行したタイミングで .node-version を読んで Node.js のバージョンを切り換えてくれます。

(上の例からの続き)
PS> cd ..
PS> nvs auto off
PS> node -v
v18.20.6
PS> cd myproject
PS> node -v
v18.20.6
PS> nvs auto
PS> node -v
v22.13.1

nvs rm

指定したバージョンの Node.js を削除します。

PS> nvs ls
 >node/22.13.1/x64 (Jod)
  node/18.20.6/x64 (Hydrogen)
  node/12.22.12/x64 (Erbium)
PS> nvs rm 18.20.6
PS> nvs ls
 >node/22.13.1/x64 (Jod)
  node/12.22.12/x64 (Erbium)

hello, world!

Node.js がインストールされたので、早速試しましょう。C 言語だと 4 行くらいかかりますが、JavaScript なら次のように 1 行でいいそうです。

console.log("hello, world!");

実行します。

PS> node ./helloworld.js
hello, world!

これで JavaScript プログラミングの環境が整いました。 次は勉強を兼ねて CSV パーサーを作ってみようと思います。

広告