Node.jsのバージョン管理の導入

2023年 2月 8日 Posted 野々瀨(フロントエンドエンジニア)

Node.jsを使ったプロジェクトや使用するフレームワーク、パッケージによってNode.jsのバージョンを変える必要が出てくる場合があります。全てのプロジェクトをNode.jsの最新バージョンにそろえられればよいのですが、なかなかそのようにいきません。そのような時、複数のNode.jsのバージョンを管理することが可能なツールを使用することで、解決することができます。
そんな複数のNode.jsのバージョンを管理するツールをご紹介します。

複数のバージョンを管理するツール

Node.jsは1台のパソコンに複数のバージョンをインストールすることができますが、バージョンごとにnodeコマンドを実行できるよう切り替えを行うには、手動で行う必要があったり、バージョンを追加する際は、その都度インストールやセットアップを行ったりする必要があります。
そこでNode.js専用の管理ツールを使用することで、これらを簡単に行うことができます。

ツールは幾つか存在していて、次のようなものがあります。

筆者はnodistを使用していましたが、少々不便になりVoltaに乗り換えたので、Voltaについてご紹介します。

Voltaとは

Voltaは次のような特長があります。

ここではWindowsを対象に説明します。

Voltaのインストール

Voltaの公式Webサイトから"Get Started"リンクを押して、"Getting Started"ページへ移動します。
"Windows Installation"という見出しの内容にある"download and run the Windows installer"リンクを押して、インストーラーをダウンロードします。

Volta公式Webサイト

ダウンロードしたインストーラーファイルを起動します。

セットアップウィザードが起動したら"Next"ボタンを押します。

ライセンスの内容を確認し、問題なければ"I accept the terms in the License Agreement"にチェックを入れ、"Next"ボタンを押します。

"Install"ボタンを押してインストールを開始します。

インストールが完了したら、"Finish"ボタンを押します。

これでインストールが完了しました。
無事インストールできたかはコマンドプロンプトなどのコマンドラインツールで、voltaコマンドに-vオプションを付けて実行することで、バージョンを確認することができます。

volta -v

Windowsの設定

WindowsでVoltaを使用するには、「開発者モード」という設定をあらかじめ有効にしておく必要があります。
開発者モードをオンにしておかないと、パッケージ類のインストールが行えません。

手順はまず、スタートメニューから"開発者向け機能を使う"と入力し、結果にある「開発者向け機能を使う」を押します。

"開発者モード"が"オフ"になっていれば、"オフ"を押して"オン"に切り替えます。

その際セキュリティ上のリスクの確認メッセージダイアログが表示されますので、"はい"ボタンを押します。

セキュリティ上のリスクの同意ウィンドウ

"オン"に切り替わったことを確認します。

これで設定完了です。

Voltaの使い方

Voltaは全てコマンドプロンプトなどのコマンドラインツールでコマンドを入力して操作を行います。

Node.jsのインストール

Node.jsをインストールするには、volta installコマンドを使用します。
次のコマンドはNode.jsの安定版(LTS)をインストールします。

volta install node

次のコマンドのように@latestを付けることでNode.jsの最新版をインストールすることができます。

volta install node@latest

node@バージョンと@マークとバージョンを後ろに付けると、バージョンを指定してインストールすることができます。

volta install node@11.15.0

さらにマイナーバージョンとリビジョンの番号を省略すると、メジャーバージョンの最新版をインストールできます。
次のコマンドは11の最新バージョンをインストールします。

volta install node@11

"success: installed and set node"……のように表示されれば、インストールが完了です。
無事インストールできたかは、次のようにnodeコマンドに-vオプションを付けて実行することで、バージョンを確認できます。

node -v

なお、Node.jsのパッケージマネージャーである「npm」も一緒にインストールされます。
同様にnpmコマンドに-vオプションを付けて実行することで、バージョンを確認できます。

npm -v

Node.jsのバージョンの切り替え

インストール済みのNode.jsのバージョンに切り替えるには、インストールと同じnode installコマンドを使用します。
@マークにバージョンを付けて実行します。
次のコマンドは11.15.0のバージョンへ切り替えます。

volta install node@11.15.0

node -vコマンドで切り替わったかを確認します。

node -v

インストール済みのNode.jsのバージョンを確認

インストール済みのNode.jsのバージョンを確認するには、volta listコマンドを使用します。
volta listコマンドはインストール済みのNode.js、パッケージマネージャー、パッケージのインストール済みの内容を確認できます。
nodeを付けることでNode.jsの確認ができます。

volta list node

node以外の指定については次の通りです。

ツール説明
all インストール済みの全ての内容を表示する
node インストール済みのNode.jsの内容を表示する
yarn インストール済みのパッケージマネージャーyarnの内容を表示する

パッケージマネージャーのインストール

パッケージマネージャーをインストールするには、Node.jsと同じvolta installコマンドを使用します。
Voltaでインストールできるパッケージマネージャーは今のところYarnのみです。

volta install yarn

yarn -vコマンドでインストールできたかを確認します。

yarn -v

パッケージのインストール

パッケージのインストールは幾つか方法があります。

Voltaで選択中のパッケージマネージャーからパッケージをインストールする場合は、volta installコマンドを使用します。
volta installコマンドを使用すると、volta listコマンドで確認した際に「(default)」と書かれているパッケージマネージャーでインストールを行ってくれます。

volta install パッケージ名

次のコマンドはGulpをインストールする例です。

volta install gulp

二つ目はパッケージマネージャーを直接実行する方法です。
npmでインストールする場合は次の通りです。

npm install -g gulp

プロジェクトごとにバージョンを固定

プロジェクトごとにNode.jsのバージョンを固定するには、volta pinコマンドを使用します。
プロジェクトファイルのディレクトリーに移動してコマンドを実行します。

cd my_project
volta pin node@16.17.0

これでプロジェクト上でnodeコマンドを実行すると、指定したバージョンで動作するようになります。

ちなみにnpmも対象のNode.jsをインストールした時のnpmのバージョンで動作するようになります。
volta pinコマンドでnpmも固定することが可能です。

volta pin npm@8.1.2

なお、volta pinコマンドでバージョンを固定する場合、プロジェクトは以下にpackage.jsonがあらかじめ設定されている必要があります。

Node.jsのアンインストール

Voltaにはアンインストールのコマンドであるvolta uninstallが実行できますが、2022年9月現在でも、Node.jsのアンインストールには対応していません。

インストール済みのNode.jsをアンインストールしたい場合は、%LOCALAPPDATA%¥VOLTA¥tools¥image¥nodeフォルダ配下にあるバージョン番号のフォルダを消すことで、実質アンインストールが行えます。

コマンドプロンプトによるアンインストールの図

グローバルのパッケージについて

1点、グローバルのパッケージはNode.jsのバージョン、パッケージマネージャーの種類やバージョンに関わらず、1つのパッケージにつき一つのバージョンしか管理することができませんでした。
例えば、グローバルにNode.jsのそれぞれのバージョンに切り替えて、、Gulpの対応するNode.jsのバージョンで3系と4系をそれぞれインストールしても、最後にインストールしたバージョンしか入れることはできません。

ただし、Voltaはプロジェクトごとにバージョンを指定すると、ローカルでインストールされているパッケージが優先されます。
ローカルにNode.jsのバージョンに対応するパッケージのバージョンがインストールされていれば、パッケージのコマンドを実行すると、ローカルのパッケージを優先して実行してくれます。
例えば、グローバルでインストールされているGulpが4系であっても、あるプロジェクトではGulpの3系で動かす必要がある場合、ローカルに3系がインストールされていれば、3系のGulpを実行してくれます。

最後に

Voltaはnodistと比べて扱いやすく、Node.js本体のバージョンを切り替えると、npmも自動的に切り替わってくれますし、プロジェクトごとにバージョンを切り替えられるので、便利に使えそうです。

今回Voltaというツールをご紹介しましたが、他にもNode.jsのバージョン管理ツールはさまざまなものが存在していますので、自身の環境にあったものを選ばれるとよいかと思います。