Skip to content

fnm vs nvm

fnm と nvm はどちらも人気の Node.js バージョンマネージャーです。このガイドでは、これらを詳細に比較して選択をサポートします。

クイック比較

機能fnmnvm
言語RustBash
起動速度⚡ 超高速🐢 低速
Windows サポート✅ ネイティブサポート❌ nvm-windows が必要
クロスプラットフォーム✅ 統一された体験⚠️ 実装が異なる
バージョンファイル✅ 複数形式サポート✅ .nvmrc
自動切り替え✅ 内蔵⚠️ フックが必要
並列ダウンロード✅ サポート❌ サポートなし
メモリ使用量💚 非常に低い🟡 中程度
インストールシングルファイルスクリプトインストール

詳細比較

パフォーマンス

fnm

bash
# 起動時間:~5-10ms
time fnm --version
# fnm 1.37.1
# real    0m0.008s

nvm

bash
# 起動時間:~100-500ms(Shell による)
time nvm --version
# 0.39.0
# real    0m0.150s

結論: fnm の起動は nvm より 10-50 倍高速で、Shell 起動時間への影響が少ないです。

クロスプラットフォームサポート

fnm

  • ✅ macOS(Intel & Apple Silicon)
  • ✅ Windows(ネイティブサポート)
  • ✅ Linux(x64 & ARM64)
  • ✅ FreeBSD

統一されたコマンドと体験で、別のツールを学ぶ必要はありません。

nvm

  • ✅ macOS / Linux
  • ❌ Windows は nvm-windows が必要(別プロジェクト)
  • ⚠️ コマンドが若干異なる

結論: fnm はクロスプラットフォームの一貫性が優れています。

バージョンファイルサポート

fnm

bash
# 複数形式をサポート
.node-version    # 推奨形式
.nvmrc           # nvm 互換
package.json     # engines.node フィールド

nvm

bash
# 1 つの形式のみサポート
.nvmrc

結論: fnm はより多くの形式をサポートし、移行が容易です。

自動バージョン切り替え

fnm

bash
# 1 行で有効化
eval "$(fnm env --use-on-cd)"

バージョンファイルのあるディレクトリに入ると自動的に切り替えます。

nvm

bash
# シェルフックを設定する必要あり
# ~/.bashrc または ~/.zshrc に追加
autoload -U add-zsh-hook
load-nvmrc() {
  # ... 複雑なスクリプト
}
add-zsh-hook chpwd load-nvmrc

結論: fnm の設定はよりシンプルで、すぐに使えます。

コマンド比較

操作fnmnvm
バージョンインストールfnm install 20nvm install 20
バージョン切り替えfnm use 20nvm use 20
インストール済み一覧fnm listnvm ls
リモート一覧fnm list-remotenvm ls-remote
デフォルト設定fnm default 20nvm alias default 20
現在のバージョンfnm currentnvm current
バージョンアンインストールfnm uninstall 20nvm uninstall 20

結論: コマンドは類似しており、移行コストは低いです。

インストール方法

fnm

bash
# macOS/Linux
curl -fsSL https://fnm.vercel.app/install | bash

# Windows
winget install Schniz.fnm

# Homebrew
brew install fnm

シングルファイルインストールで、複雑な設定は不要です。

nvm

bash
# macOS/Linux
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

# Windows
# nvm-windows を別途インストールする必要あり

Shell 設定ファイルの修正が必要です。

機能

fnm 独自の機能

  • 🚀 並列ダウンロード、より高速なインストール
  • 📦 シングルファイル、依存関係なし
  • 🔄 再帰的バージョンファイル検索
  • 🎯 engines.node サポート
  • 📊 より良いエラーメッセージ

nvm 独自の機能

  • 📚 より成熟したエコシステム
  • 🏷️ より多くの LTS バージョンエイリアス
  • 🔧 よりきめ細かい設定オプション

移行ガイド

nvm から fnm に移行

1. fnm をインストール

bash
curl -fsSL https://fnm.vercel.app/install | bash

2. Shell 設定を更新

bash
# nvm 設定を削除
# fnm 設定を追加
eval "$(fnm env --use-on-cd)"

3. バージョンファイルの互換性

.nvmrc ファイルは修正なしで使用でき、fnm は完全に互換性があります。

4. Node.js を再インストール

bash
fnm install --lts
fnm install 18

選択の推奨事項

fnm を選ぶべき場合:

  • Windows を使用している
  • 極限のパフォーマンスを追求
  • クロスプラットフォームの一貫性が必要
  • 簡単な設定を希望
  • Apple Silicon Mac を使用

nvm を選ぶべき場合:

  • 確立された nvm ワークフローがある
  • 特定の nvm 機能が必要
  • プロジェクトが nvm 固有の動作に依存

まとめ

fnm はモダンな Node.js バージョンマネージャーで、nvm に対する以下の利点があります:

  1. 高速 - Rust で構築され、非常に高速な起動と実行
  2. シンプル - シングルファイルインストール、簡単な設定
  3. 統一 - 一貫したクロスプラットフォーム体験
  4. スマート - 自動バージョン切り替え、複数形式サポート

新しいプロジェクトや効率を追求する開発者にとって、fnm はより良い選択です。

関連リンク