Node.jsのバージョン管理の導入
2023年 2月 8日 Posted 野々瀨(フロントエンドエンジニア)
Node.jsを使ったプロジェクトや使用するフレームワーク、パッケージによってNode.jsのバージョンを変える必要が出てくる場合があります。全てのプロジェクトをNode.jsの最新バージョンにそろえられればよいのですが、なかなかそのようにいきません。そのような時、複数のNode.jsのバージョンを管理することが可能なツールを使用することで、解決することができます。
そんな複数のNode.jsのバージョンを管理するツールをご紹介します。
複数のバージョンを管理するツール
Node.jsは1台のパソコンに複数のバージョンをインストールすることができますが、バージョンごとにnode
コマンドを実行できるよう切り替えを行うには、手動で行う必要があったり、バージョンを追加する際は、その都度インストールやセットアップを行ったりする必要があります。
そこでNode.js専用の管理ツールを使用することで、これらを簡単に行うことができます。
ツールは幾つか存在していて、次のようなものがあります。
- Fast Node Manager (fnm)
- n
- nodebrew
- nodist
- nvm / nvm-windows
- nvs
- Volta
筆者はnodistを使用していましたが、少々不便になりVoltaに乗り換えたので、Voltaについてご紹介します。
Voltaとは
Voltaは次のような特長があります。
- クロスプラットフォーム(Linux、Mac、Windows)に対応
- プロジェクトごとに自動的にバージョンを切り替えることが可能
- 処理速度が速い(Rust製なので)
- 複数のパッケージマネージャーに対応(現在はnpm、yarnのみ)
ここではWindowsを対象に説明します。
Voltaのインストール
Voltaの公式Webサイトから"Get Started"リンクを押して、"Getting Started"ページへ移動します。
"Windows Installation"という見出しの内容にある"download and run the Windows installer"リンクを押して、インストーラーをダウンロードします。
ダウンロードしたインストーラーファイルを起動します。
セットアップウィザードが起動したら"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のバージョン管理ツールはさまざまなものが存在していますので、自身の環境にあったものを選ばれるとよいかと思います。