【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 on
とnvs auto
は何がちがうの?」など、Volta と比べるとコマンド体系がわかりづらいように思いました。
開発は (Volta と比べて) スローペース
個人的にはあまり気になりませんが、Volta と比べると開発はスローペースな感じです。「ちゃんとメンテナンスされるのかな」という不安感をユーザーに与えてしまうかもしれません。
NVS のインストールとアンインストール
ここでは、git clone
によるインストールを行います。winget でインストールする方法に比べて手間はかかりますが、インストール先を選ぶことができます。git コマンドへのパスが通っていなければ、事前に通しておいてください。なお、手順はおおむね公式ドキュメントにしたがっています。
- インストール先フォルダを NVS_HOME にセットする。
PS> $env:NVS_HOME="$env:HOME\.nvs"
git clone
する。PS> git clone https://github.com/jasongin/nvs "$env:NVS_HOME"
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.
- メッセージにしたがって settings.json を編集する。※ おそらく今回のインストール先がシステムフォルダではなくユーザーフォルダなために必要な設定だと思われます (README の「System linking」 参照)。settings.json (差分)
{ "aliases": {}, + "linkToSystem": false, "remotes": { "default": "node", "node": "https://nodejs.org/dist/"
- 再度
install
コマンドを実行し、無事に完了したらバージョン確認。PS> . "$env:NVS_HOME\nvs.ps1" install PS> nvs --version 1.7.1
nvs
コマンドへのパスが通ります。
アンインストールに関しては公式ドキュメントにはまとまった記載がありませんが、おそらく次の手順になると思われます。
- NVS が追加したユーザープロファイルや環境変数を
nvs uninstall
コマンドで削除する。PS> nvs uninstall
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
コマンドを使います。
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 を新規作成します)。
if (Get-Command "nvs" -ea SilentlyContinue) {
& nvs auto on
}
このあたりは Volta と比べると相当面倒くさい感じがします。でももしかしたら「ツール側ではユーザーの環境を勝手にいじったりしないから、やりたきゃ自分でやってね」というポリシーなのかもしれません。なお、auto on
状態を解除するにはnvs auto off
コマンドを実行します。
nvs auto
nvs auto
をon
/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 パーサーを作ってみようと思います。
広告