Skip to content
Latchkey

nvm vs fnm: より高速な Node バージョン切り替え

nvm はシェルで書かれた最も広く使われる Node バージョンマネージャ。fnm はシェル起動がより速い Rust 製の高速な代替です。

nvm はシェル関数と .nvmrc ファイルで Node バージョンを管理し、ほぼどこにでもインストールされていますが、そのシェルの source 読み込みがターミナル起動を遅くします。fnm は同じ仕事を Rust で行い、はるかに速く起動し、.nvmrc と .node-version をサポートし、cd 時にバージョンを切り替えます。どちらもプロジェクトごとに Node を固定し、fnm は nvm の普遍性と引き換えに明確に優れた速度を提供します。

nvmfnm
言語シェルRust
速度シェル起動が遅い高速
設定.nvmrc.nvmrc / .node-version
自動切り替えプラグイン / 手動cd 時
最適な用途最大の普遍性速度重視の開発者

CI では

nvm は CI で動作しますが、job ごとにシェルの source 読み込みのオーバーヘッドが加わります。fnm は単一のバイナリから Node をより速くインストール・切り替えます。どちらも .nvmrc を読むため移行は容易です。実際には多くのパイプラインは setup-node を使いますが、リポジトリの .nvmrc を尊重する必要がある job には fnm がより無駄のない選択肢です。

高速化

.nvmrc と lockfile をキーに、Node のインストールディレクトリとパッケージマネージャの cache を保存しましょう。どちらも CI runner 上で動作し、より高速なマネージド runner は Node のインストールと依存関係の手順を短縮します。

結論

最大のコミュニティを持ち最も普遍的に利用できるツールがほしいなら nvm。単一のバイナリから高速なシェル起動と素早いバージョン切り替えがほしいなら fnm。fnm は .nvmrc を読むため、nvm と並行して試すのは低リスクです。

関連ガイド