1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【NVM】人気のNode.jsバージョン管理ツール

Posted at

はじめに

Node.jsのバージョン管理には苦労した経験がある方も多いのではないでしょうか。私もその一人です。

nodenvを使用してNode.jsのバージョンを切り替えようと nodenv local v22.15.0 を実行したのに、バージョンが切り替わらない...調べてみると、なんとnodebrewというツールもインストールされていて、PATHの設定でnodenvより先にnodebrewが読み込まれていたのです。

この問題を解決した後、「もっと良いNode.jsバージョン管理ツールはないのか?」と調査したところ、nvmというツールがGitHubで圧倒的なスター数(84.3k)を獲得していることを発見しました。nodenvの2.3kと比べると、その差は歴然です。

そこで今回は、Node.jsバージョン管理ツールの王者(仮)「nvm (Node Version Manager)」について詳しく解説します。

nvmとは?

nvmは、Node Version Managerの略で、複数のNode.jsバージョンを簡単に管理するためのコマンドラインツールです。GitHubでは84.3k以上のスターを獲得しており、Node.jsバージョン管理ツールの中では圧倒的な人気を誇ります。

nvmの主な特徴

  • POSIXに準拠したシェル(bash、zsh、kshなど)で動作
  • Unix、macOS、Windows WSLで利用可能
  • シンプルなコマンドで複数のNode.jsバージョンを切り替え可能

nvmのインストール方法

基本的なインストール方法

nvmをインストールするには、以下のコマンドを実行します

# curlを使う場合
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash

# wgetを使う場合
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash

# Homebrewを使う場合(推奨されていないようです)
brew install nvm

このスクリプトは、nvmリポジトリを~/.nvmにクローンし、適切なプロファイルファイル(~/.bashrc~/.bash_profile~/.zshrc、または~/.profile)に以下のコードを追加します。

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

インストールの確認

インストールが成功したかどうかを確認するには

command -v nvm

このコマンドがnvmを出力すれば、インストールは成功しています。

nvmの基本的な使い方

Node.jsのインストール

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

# 特定のバージョンをインストール
nvm install 14.17.0

# LTS版をインストール
nvm install --lts

バージョンの切り替え

# 特定のバージョンに切り替え
nvm use 14.17.0

# 最新版に切り替え
nvm use node

# LTS版に切り替え
nvm use --lts

インストール済みバージョンの確認

nvm ls

インストール可能なバージョンの確認

nvm ls-remote

デフォルトバージョンの設定

nvm alias default 14.17.0

プロジェクト固有のNode.jsバージョン

プロジェクトごとに異なるNode.jsバージョンを指定したい場合は、.nvmrcファイルを使用します。

# プロジェクトのルートディレクトリに.nvmrcファイルを作成
echo "14.17.0" > .nvmrc

# または最新のLTS版を使用する場合
echo "lts/*" > .nvmrc

そして、プロジェクトディレクトリで以下のコマンドを実行するだけです

nvm use

nvmは.nvmrcファイルを自動的に検出し、指定されたバージョンに切り替えます。

ディレクトリによる自動切り替え

ディレクトリを移動するたびに自動的に適切なNode.jsバージョンに切り替えるように設定することもできます。

Bashの場合

# ~/.bashrcに追加
cdnvm() {
    command cd "$@" || return $?
    nvm_path="$(nvm_find_up .nvmrc | command tr -d '\n')"

    if [[ -s "$nvm_path/.nvmrc" ]]; then
        nvm use
    elif [[ $(nvm current) != $(nvm version default) ]]; then
        echo "Reverting to nvm default version"
        nvm use default
    fi
}
alias cd='cdnvm'

Zshの場合

# ~/.zshrcに追加
autoload -U add-zsh-hook

load-nvmrc() {
  local nvmrc_path
  nvmrc_path="$(nvm_find_nvmrc)"

  if [ -n "$nvmrc_path" ]; then
    nvm use
  elif [ -n "$(PWD=$OLDPWD nvm_find_nvmrc)" ] && [ "$(nvm version)" != "$(nvm version default)" ]; then
    echo "Reverting to nvm default version"
    nvm use default
  fi
}

add-zsh-hook chpwd load-nvmrc
load-nvmrc

nvmの高度な使い方

グローバルパッケージの移行

新しいNode.jsバージョンをインストールする際に、以前のバージョンからnpmパッケージを移行できます

nvm install --reinstall-packages-from=14.17.0 16.3.0

バイナリのミラーを使用する

デフォルトのNodeソースからダウンロードできない場合、ミラーを指定できます:

export NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist
nvm install node

カスタムカラーの設定

バージョン情報の表示に使用される色をカスタマイズできます

nvm set-colors rgBcm

nvmのメリット

  1. 圧倒的な人気と安定性:長年の開発により非常に安定しており、多くの問題が修正されています。

  2. シンプルな使用法:直感的なコマンドで簡単に使用できます。

  3. 強力なバージョン管理:.nvmrcファイルによるプロジェクト固有の設定が可能です。

  4. LTSサポート:LTSバージョンを簡単にインストールできます。

  5. コミュニティサポート:大規模なユーザーベースによる豊富な情報と問題解決のリソースがあります。

注意点

  1. Windowsサポート:Windows WSLでは動作しますが、ネイティブWindowsシェルはサポートしていません(代わりにnvm-windowsを使用)。

  2. Fishシェル:Fishシェルには直接対応していません(代替ソリューションあり)。

  3. メモリ使用量:複数のNode.jsバージョンをインストールすると、ディスク容量を消費します。

まとめ

nvmは、Node.js開発者にとって必須のツールと言えるでしょう。複数のプロジェクトで異なるNode.jsバージョンを使用する必要がある場合、nvmを使えば簡単に切り替えることができます。GitHubで84.3k以上のスターを獲得している人気の理由がよくわかります。

また、プロジェクトレベルで.nvmrcファイルを使用することで、チームメンバー全員が同じNode.jsバージョンを使用することが保証され、「動作しない」という問題を未然に防ぐことができます。

関連資料

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?