プログラマーのためのNode.js環境構築ツール「Volta」

沖縄チームのキリです。Node.jsを使ってるプロジェクトで、パッケージのインストールが失敗したり、npmスクリプトがうまく動かなかったりすること、ありませんか?今回は、Node.jsやnpmのバージョンをプロジェクトごとに簡単に切り替えられる「Volta」というツールを紹介します。Voltaを導入すれば、開発環境のセットアップが楽になり、開発メンバーそれぞれの環境のNode.jsバージョンの違いによる問題を解消できます。

開発中にこんな経験はありませんか?

  • 複数のプロジェクトを同時進行している際、各プロジェクトで必要なNode.jsのバージョンが異なるため、頻繁な切り替えを余儀なくされる。
  • チームで開発を行う際、メンバー間でNode.jsやパッケージマネージャーのバージョンが統一されておらず、「自分の環境では動作するにもかかわらず、他の環境では動作しない」といった問題(いわゆるおま環)が発生する。
  • 新たなプロジェクトに参加する際、そのプロジェクトに必要なNode.jsやパッケージマネージャーのバージョンを調査するのに時間がかかり、セットアップに苦労する。

Voltaは、これらの問題を解決し、開発者がよりスムーズに開発作業に集中できる環境を提供するためのツールです。

Voltaとは?

Voltaは、Node.js、npm、yarn、pnpmなどのJavaScriptツールのバージョンをプロジェクトごとに管理するためのツールマネージャーです。Windows、macOS、Linuxといった主要なOSに対応し、高速に動作します。さらに、プロジェクトごとに依存関係を分離することで、予期せぬバージョンの衝突を回避し、安定した開発環境を構築することができます。

Voltaのインストール

インストールは、各プラットフォーム向けに提供されているインストーラーを使って行います。

macOS/Linux(またはwsl)の場合

curl https://get.volta.sh | bash

Windowsの場合

Windowsへのインストールには、wingetを使用する方法と、インストーラーを直接ダウンロードする方法があります。

wingetを使用する場合:

winget install Volta.Volta

インストーラーをダウンロードする場合:

https://github.com/volta-cli/volta/releases/ からインストーラーor実行ファイルをダウンロードします。

.msi形式がインストーラーで、実行ファイルはzipに入っています。個人的にはwindows環境のまま開発すると、macユーザーやサーバー間での環境の違いに起因する想定外の不具合で苦労することがあったので、wslを使用してmacOS/Linux同様にコマンドでインストールする方が好みです。

Voltaの使い方

以下に、Voltaの基本的な使い方を紹介します。

Node.jsのインストール

# 特定バージョンのNode.jsをインストール
volta install node@18.19.0

# LTS版のNode.jsをインストール
volta install node@lts

# 最新版のNode.jsをインストール
volta install node

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

volta install npm
volta install yarn
volta install pnpm

他にも導入可能なツールは色々あるようですが、詳しくは調べていないので興味があれば調べてみてください。

プロジェクトごとのNode.jsバージョン指定

プロジェクトのディレクトリでvolta pin node@18.19.0を実行すると、そのプロジェクトで使用するNode.jsのバージョンが18.19.0に固定され、設定がpackage.jsonファイルに保存されるため、voltaを使用しているチームのメンバーも同様の環境を容易に再現できます。

プロジェクトごとのパッケージマネージャー指定

同様に、volta pin npm@10.2.4を実行することで、プロジェクトで使用するパッケージマネージャーを指定できます。

実行

VoltaでインストールされたNode.jsやパッケージマネージャーは、node -vnpm -vなどのコマンドで通常どおり実行できます。Voltaは、プロジェクトの設定に基づいて、適切なバージョンを自動的に選択します。

Volta自体のアップデート

Volta自体のアップデートはインストール同様の手順を行います。

Voltaのメリット

  • プロジェクトごとのNode.jsのバージョンをpinコマンドで固定すればプロジェクトごとに実行されるNode.jsのバージョンが自動的に切り替わるため、複数のプロジェクトを同時進行する際にもバージョンを気にせず開発に集中できる。
  • チーム開発において、Node.jsやパッケージマネージャーのバージョンを統一することにより、「自身の環境では動作するにもかかわらず、他の環境では動作しない」いわゆる「おま環」問題を回避しやすい。
  • システム全体に特定のバージョンのNode.jsをインストールする必要がないため、他のプロジェクトへの影響を考慮することなく、安心して開発を進めることができる。

参考資料