コンテンツにスキップ

NVS

NVS は Node.js 環境を管理できるツールである。

GitHub - jasongin/nvs: Node Version Switcher - A cross-platform tool for switching between versions and forks of Node.js

NVM と異なり、Windows でも使える。

インストールする (Windows)

Windows でのインストールはインストーラーを実行する。

インストールする (Linux)

Linux でのインストールは以下のコマンドを実行する。

1
2
3
4
# インストールする
$ export NVS_HOME="$HOME/.nvs"
$ git clone https://github.com/jasongin/nvs "$NVS_HOME"
$ . "$NVS_HOME/nvs.sh" install

コマンドを実行すると~/.bashrcに環境変数が追加される。

~/.bashrc
1
2
3
# NVS
export NVS_HOME="$HOME/.nvs"
[ -s "$NVS_HOME/nvs.sh" ] && . "$NVS_HOME/nvs.sh"

NVS を使う

nvsコマンドを実行する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# インストール可能なNode.jsの一覧を表示する
$ nvs ls-remote
# 新しい順のLTS版上位10件を表示する
$ nvs ls-remote | grep \( | head -n 10

# Node.jsをインストールする
$ nvs add 22.20.0

# インストール済みのNode.jsの一覧を表示する
$ nvs ls

# デフォルトのNode.jsのバージョンを設定する
$ nvs link 22.20.0

# Node.jsをアンインストールする
$ nvs rm 22.20.0
# 上記が駄目だったらこれ
$ nvsudo rm 22.20.0

sudo コマンドで node を実行できないので、visudo を使って環境変数を設定するべき。

NVS のヘルプコマンド日本語訳

コマンド 説明
nvs help <command> コマンドの詳細なヘルプを取得する。
nvs install NVS を使用するためのプロファイルを初期化する。
nvs --version NVS ツールのバージョンを表示する。
- -
nvs menu インタラクティブ メニューを起動する。
nvs add <version> node のバージョンをダウンロードして抽出する。
nvs rm <version> node のバージョンを削除する。
nvs merge <fromver> [tover] グローバル モジュールを移行する。
nvs upgrade [fromver] メジャーバージョンの最新パッチへアップグレードする。
- -
nvs use [version] 現在のシェルで node のバージョンを使用する。
nvs auto [on/off] cwd に基づいて自動的に切り替える。
nvs run <ver> <js> [args...] node のバージョンを使用してスクリプトを実行する。
nvs exec <ver> <exe> [args...] node のバージョンを使用して実行可能ファイルを実行する。
nvs which [version] node のバージョンバイナリへのパスを表示する。
- -
nvs ls [filter] ローカル node のバージョンをリストする。
nvs ls-remote [filter] ダウンロード可能な node のバージョンをリストする。
nvs outdated ローカル node のバージョンと利用可能なアップデートをリストする。
- -
nvs link [version] バージョンをデフォルトとしてリンクする。
nvs unlink [version] デフォルトのバージョンへのリンクを削除する。
- -
nvs alias [name] [value] バージョンのエイリアスを設定または呼び出す。
nvs remote [name] [uri] ダウンロード ベース URI を設定または呼び出す。
1
2
3
4
5
バージョン文字列は、セマンティックなバージョン番号またはバージョン ラベルで構成されます。
("lts"または"latest")、オプションで前にリモート名が続きます。
その後にスラッシュで区切られたアーキテクチャが続きます。
例: "lts"、"4.6.0"、"6.3.1/x86"、"node/6.7.0/x64"
エイリアスは、バージョン文字列の代わりにどこでも使用できます。

NVS でグローバルにインストールしたパッケージを更新・削除する

グローバルにインストールしたパッケージの更新が上手くいかない。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
$ ncu -g
[====================] 4/4 100%

 some-package   2.156.0    2.158.0
 corepack   0.29.3     0.29.4

ncu itself cannot upgrade global packages. Run the following to upgrade all global packages:

npm -g install some-package@2.158.0 corepack@0.29.4

$ sudo npm -g install some-package@2.158.0
npm error code ENOTEMPTY
npm error syscall rename
npm error path /home/{ユーザー名}/.nvs/node/20.17.0/x64/lib/node_modules/some-package
npm error dest /home/{ユーザー名}/.nvs/node/20.17.0/x64/lib/node_modules/.some-package-0HUmid0N
npm error errno -39
npm error ENOTEMPTY: directory not empty, rename '/home/{ユーザー名}/.nvs/node/20.17.0/x64/lib/node_modules/some-package' -> '/home/{ユーザー名}/.nvs/node/20.17.0/x64/lib/node_modules/.some-package-0HUmid0N'
npm error A complete log of this run can be found in: /root/.npm/_logs/2024-09-17T05_44_24_101Z-debug-0.log

パッケージのディレクトリを直接削除して再インストールする。

1
2
$ rm -rf ~/.nvs/node/20.17.0/x64/lib/node_modules/some-package
$ npm -g install some-package