skip to content
日替わり OSS
Table of Contents

リポジトリ

  • nvm-sh/nvm
  • 主要言語: Shell / ライセンス: MIT / ★ 94,483

nvm とは:Node.js 開発者の強い味方、バージョン管理の決定版

Node.js を利用した開発において、「プロジェクトAは Node.js v18 を要求するが、プロジェクトBは v20 で開発されている」といったバージョンの衝突に直面した経験はありませんか? また、新しい Node.js の機能やパフォーマンスを試したいが、既存の安定稼働中のプロジェクトに影響を与えたくない、と考えることもあるでしょう。このような Node.js バージョン管理の課題をシンプルかつ強力に解決してくれるのが、今回ご紹介する nvm (Node Version Manager) です。

nvm は、POSIX 準拠のシェル(Bash, Zsh, Ksh, Dash など)上で動作する、Node.js のバージョン管理ツールです。macOS や Linux 環境、そして Windows Subsystem for Linux (WSL) においても、ユーザーごとに簡単に Node.js の異なるバージョンをインストールし、迅速に切り替えることを可能にします。そのシンプルさと堅牢性から、Node.js 開発者にとって事実上の標準ツールとして広く利用されており、GitHub でのスター数からもその圧倒的な支持が伺えます。

nvm が実現する開発環境の柔軟性

nvm の最大の魅力は、その直感的な操作性で複数の Node.js バージョンを管理できる点にあります。

複数バージョンのインストールと切り替え

新たな Node.js バージョンを導入したい場合、nvm install <バージョン> コマンド一つで簡単にインストールできます。例えば、nvm install 20 と実行すれば、最新の Node.js v20 系がシステムに導入されます。

インストール済みのバージョンを切り替えるのも非常にシンプルです。nvm use <バージョン> コマンドを実行するだけで、現在のシェルセッションで使用される Node.js のバージョンが即座に変更されます。これにより、プロジェクトごとに異なる Node.js バージョンを使い分けることが容易になり、開発者はバージョンの違いによる互換性の問題を心配することなく、複数のプロジェクトを並行してスムーズに進められます。

Terminal window
$ nvm install 20
$ nvm use 20
$ node -v
v20.20.1

※上記は nvm install と nvm use でバージョンを切り替えた場合の出力イメージです。実際の出力は環境やバージョンによって異なります。

プロジェクト固有のバージョン自動適用

さらに nvm は、.nvmrc ファイルを活用することで、特定のディレクトリ(プロジェクトルートなど)に入った際に自動的に指定された Node.js バージョンに切り替えることも可能です。プロジェクトのルートに echo "20" > .nvmrc と記述したファイルを配置しておけば、そのディレクトリで作業を開始するたびに nvm use を手動で実行する必要がなくなり、開発ワークフローが格段に効率化されます。この機能は、チーム開発においてプロジェクトの Node.js バージョンを統一し、環境構築のばらつきを防ぐ上で非常に役立ちます。

グローバルパッケージの効率的な移行

Node.js のバージョンをアップグレードする際、これまでインストールしていた npm のグローバルパッケージ(nodemon, webpack, typescript など)を新しいバージョンでも利用したいケースがあります。nvm は、--reinstall-packages-from オプションや nvm migrate コマンドを用いることで、既存のグローバルパッケージを新しい Node.js バージョンに簡単に移行する機能を提供しており、再インストールによる手間を省き、開発環境のセットアップ時間を短縮します。

その他の便利な機能

  • インストール済みバージョンの一覧表示: nvm ls で現在インストールされている Node.js のバージョンを確認できます。
  • デフォルトバージョンの設定: nvm alias default <バージョン> で、新しいシェルを開いたときに自動的に使用される Node.js バージョンを設定できます。
  • 長期サポート (LTS) バージョンの指定: nvm install --lts や nvm use --lts で、LTS バージョンを簡単に指定・利用できます。

どんな現場で役立つか

nvm は、以下のような開発シーンで特にその真価を発揮します。

  • 複数の Node.js プロジェクトを扱う開発者: 各プロジェクトが異なる Node.js バージョンを要求する場合でも、スムーズに切り替えて作業できます。
  • レガシープロジェクトの保守: 古い Node.js バージョンに依存する既存システムを保守しながら、最新の Node.js バージョンで新規開発を進めることができます。
  • ライブラリやフレームワークの開発者: 自身のライブラリが様々な Node.js バージョンで正しく動作するかを簡単にテストできます。
  • CI/CD 環境: Dockerfile や CI スクリプト内で特定の Node.js バージョンを厳密に指定し、ビルドやテストの再現性を高めることができます。特に Docker 環境での利用は、公式ドキュメントでも詳細に解説されており、安定した CI/CD パイプライン構築に貢献します。

nvm の導入方法

nvm のインストールは非常に簡単です。以下のコマンドをシェルで実行するだけで、自動的にダウンロード・インストールされ、シェルの設定ファイル(.bashrc や .zshrc など)に nvm を読み込むための設定が追記されます。

Terminal window
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.6/install.sh | bash

インストール後、ターミナルを再起動するか、source ~/.bashrc (または該当する設定ファイル) を実行して nvm をロードすれば、すぐに利用を開始できます。

まとめ

nvm は、Node.js 開発者にとってバージョン管理の複雑さを解消し、開発効率を飛躍的に向上させるための不可欠なツールです。そのシンプルながらも強力な機能は、個人の開発環境からチーム開発、さらには CI/CD パイプラインまで、あらゆる Node.js 開発の現場で大きな恩恵をもたらします。まだ nvm を使ったことがない Node.js 開発者の方は、ぜひこの機会に導入を検討してみてはいかがでしょうか。開発体験が劇的に改善されることを実感できるはずです。