Node.jsのバージョン管理:mise・nvm・Volta・asdf・nodenvの使い方

スポンサーリンク

Node.jsのバージョン管理:mise・nvm・Volta・asdf・nodenvの使い方

はじめに

バージョン管理ツールを使えば、プロジェクトごとにNode.jsのバージョンを自動で切り替えられます。この記事ではよく使われる nvm、最近人気の misepackage.json でバージョン管理できる Volta、多言語対応の asdf、シンプルな nodenv の使い方を解説します。

バージョン確認コマンドは「Node.jsのバージョン確認方法:npm・yarn・pnpm・Bunもまとめて解説」を参照してください。


mise(推奨)

miseはRust製のバージョン管理ツールで、Node.js・Python・Ruby・Goなど複数言語を1つのツールで管理できます。

インストール

# macOS(Homebrew)
brew install mise

# シェルに設定を追加
echo 'eval "$(mise activate zsh)"' >> ~/.zshrc
source ~/.zshrc

Node.jsをインストールする

# インストール可能なバージョンを確認
mise ls-remote node

# LTS版をインストール
mise install node@lts

# 特定バージョンをインストール
mise install node@22

# 最新バージョンをインストール
mise install node@latest

バージョンを切り替える

# グローバル(デフォルト)に設定
mise use --global node@22

# プロジェクトごとに設定(.mise.tomlを作成)
mise use node@20

プロジェクトディレクトリに .mise.toml が作成されます。

[tools]
node = "20"

このファイルをgitで管理することで、チームで同じバージョンを使えます。

バージョンを確認する

node -v
# v22.14.0

mise list node
# node  22.14.0  ~/dev/myproject/.mise.toml

nvm

nvmはNode.js専用の老舗バージョン管理ツールです。情報量が多く、長年使われています。

インストール

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

インストール後、シェルの設定ファイルに以下が自動追加されます。

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

設定を反映します。

source ~/.zshrc

Node.jsをインストールする

# インストール可能なバージョンを確認
nvm ls-remote

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

# 特定バージョンをインストール
nvm install 22
nvm install 20.18.0

バージョンを切り替える

# 使用するバージョンを切り替える(現在のシェルのみ)
nvm use 20

# デフォルトに設定
nvm alias default 22

プロジェクトごとに自動切り替え

プロジェクトのルートに .nvmrc ファイルを作成します。

echo "20" > .nvmrc

ディレクトリに入ったときに自動切り替えするには、~/.zshrc に以下を追加します。

autoload -U add-zsh-hook

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

  if [ -n "$nvmrc_path" ]; then
    local nvmrc_node_version
    nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")

    if [ "$nvmrc_node_version" = "N/A" ]; then
      nvm install
    elif [ "$nvmrc_node_version" != "$(nvm version)" ]; then
      nvm use
    fi
  fi
}

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

バージョンを確認する

node -v
# v20.18.0

nvm list
#        v20.18.0
# ->     v22.14.0
# default -> 22 (-> v22.14.0)
# lts/* -> lts/jod (-> v22.14.0)

nodenv

nodenvはrbenv・pyenvと同じ仕組みのNode.js専用ツールです。シンプルで軽量です。

インストール

# Homebrewでインストール
brew install nodenv

# シェルに設定を追加
echo 'eval "$(nodenv init -)"' >> ~/.zshrc
source ~/.zshrc

Node.jsをインストールする

# インストール可能なバージョンを確認
nodenv install --list

# 特定バージョンをインストール
nodenv install 22.14.0
nodenv install 20.18.0

バージョンを切り替える

# グローバルに設定
nodenv global 22.14.0

# プロジェクトごとに設定(.node-versionを作成)
nodenv local 20.18.0

nodenv local を実行するとプロジェクトディレクトリに .node-version ファイルが作成されます。

20.18.0

バージョンを確認する

node -v
# v20.18.0

nodenv versions
#   20.18.0
# * 22.14.0 (set by /Users/username/.nodenv/version)

Volta

VoltaはRust製のNode.js専用ツールマネージャーです。バージョン情報を package.json に書く点が他のツールと異なります。

インストール

# macOS / Linux
curl https://get.volta.sh | bash

シェルの設定ファイルに以下が自動追加されます。

export VOLTA_HOME="$HOME/.volta"
export PATH="$VOLTA_HOME/bin:$PATH"

Node.jsをインストールする

# LTS版をインストール
volta install node

# 特定バージョンをインストール
volta install node@22
volta install node@20

バージョンを切り替える

# グローバルに設定
volta install node@22

# プロジェクトごとに固定(package.jsonに書き込む)
volta pin node@20
volta pin npm@10

volta pin を実行すると package.json に以下が追加されます。

{
  "volta": {
    "node": "20.18.0",
    "npm": "10.9.2"
  }
}

バージョン情報が package.json に集約されるため、.nvmrc などの追加ファイルが不要です。

バージョンを確認する

node -v
# v20.18.0

volta list
# ⚡️ User toolchain:
#     Node: v22.14.0 (default)
#     Node: v20.18.0

asdf

asdfは多言語対応のバージョン管理ツールです。プラグインを追加することでNode.js以外にもPython・Ruby・Goなど多数の言語を管理できます。miseはasdfと互換性があり、asdfの後継として位置づけられています。

インストール

# macOS(Homebrew)
brew install asdf

# シェルに設定を追加
echo '. /opt/homebrew/opt/asdf/libexec/asdf.sh' >> ~/.zshrc
source ~/.zshrc

Node.jsプラグインを追加する

asdf plugin add nodejs

Node.jsをインストールする

# インストール可能なバージョンを確認
asdf list all nodejs

# 特定バージョンをインストール
asdf install nodejs 22.14.0
asdf install nodejs 20.18.0

# LTS版をインストール
asdf install nodejs latest:20

バージョンを切り替える

# グローバルに設定
asdf global nodejs 22.14.0

# プロジェクトごとに設定(.tool-versionsを作成)
asdf local nodejs 20.18.0

asdf local を実行するとプロジェクトディレクトリに .tool-versions ファイルが作成されます。

nodejs 20.18.0

複数言語を管理する場合は1ファイルにまとめられます。

nodejs 20.18.0
python 3.12.0
ruby 3.3.0

バージョンを確認する

node -v
# v20.18.0

asdf list nodejs
#   20.18.0
# * 22.14.0

全ツールの比較

mise nvm Volta asdf nodenv
対応言語 多言語 Node.js専用 Node.js専用 多言語(プラグイン) Node.js専用
インストール brew install mise curlスクリプト curlスクリプト brew install asdf brew install nodenv
設定ファイル .mise.toml .nvmrc package.json .tool-versions .node-version
自動切り替え ディレクトリ移動で自動 設定が必要 ディレクトリ移動で自動 ディレクトリ移動で自動 ディレクトリ移動で自動
起動速度への影響 小さい やや大きい 小さい 小さい 小さい
asdf互換
  • 多言語を管理するなら mise(asdf互換で移行しやすい)
  • Node.js専用で情報量重視なら nvm
  • package.json にまとめたいなら Volta
  • asdfを既に使っているなら asdf のまま継続でOK
  • シンプルさ重視なら nodenv

まとめ

ツール インストール バージョン指定 確認
mise brew install mise mise use node@22 mise list node
nvm curlスクリプト nvm use 22 nvm list
Volta curlスクリプト volta pin node@22 volta list
asdf brew install asdf asdf local nodejs 22.14.0 asdf list nodejs
nodenv brew install nodenv nodenv local 22.14.0 nodenv versions