Skip to content

Node.js バージョン管理

fnm は強力なバージョン管理機能を提供し、複数の Node.js バージョンを簡単に切り替えできます。

基本操作

インストール済みバージョンを表示

bash
fnm list

出力例:

* v20.10.0 default
  v18.19.0
  v16.20.2
  • * は現在使用中のバージョンを示します
  • default はデフォルトバージョンを示します

現在のバージョンを表示

bash
fnm current

バージョンを切り替え

bash
# 特定のバージョンに切り替え
fnm use 20

# 特定の正確なバージョンに切り替え
fnm use 20.10.0

# バージョンがインストールされていない場合、自動インストールして切り替え
fnm use 18 --install-if-missing

デフォルトバージョン

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

bash
fnm default 20

デフォルトバージョンは:

  • 新しいターミナルセッション開始時に使用されるバージョン
  • バージョンファイルがない場合に使用されるバージョン

デフォルトバージョンを表示

bash
fnm default

バージョンエイリアス

エイリアスを使用すると、バージョンに覚えやすい名前を設定できます。

エイリアスを作成

bash
# バージョンのエイリアスを設定
fnm alias 20 default
fnm alias 18 legacy
fnm alias 16 old

エイリアスを使用

bash
# エイリアスでバージョンを切り替え
fnm use default
fnm use legacy

エイリアスを削除

bash
fnm unalias legacy

自動バージョン切り替え

fnm はプロジェクトディレクトリに基づいて Node.js バージョンを自動切り替えできます。

自動切り替えを有効化

Shell 設定に --use-on-cd を追加:

bash
eval "$(fnm env --use-on-cd)"

バージョンファイルを作成

プロジェクトルートの .node-version または .nvmrc ファイルを作成:

bash
# .node-version を使用(推奨)
echo "20" > .node-version

# または .nvmrc を使用(nvm 互換)
echo "v18.17.0" > .nvmrc

バージョンファイル形式

.node-version は以下の形式をサポートします:

20           # メジャーバージョン、最新の 20.x.x を使用
20.10        # マイナーバージョン、最新の 20.10.x を使用
20.10.0      # 正確なバージョン
lts/iron     # LTS バージョン名

バージョンファイル解析ストラテジー

fnm は 2 つのバージョンファイル解析ストラテジーをサポートします:

bash
# local(デフォルト)- 現在のディレクトリのみ検索
fnm env --version-file-strategy=local

# recursive - 親ディレクトリを再帰的に検索
fnm env --version-file-strategy=recursive

package.json engines サポート

fnm は package.jsonengines.node フィールドを読み取れます:

json
{
  "engines": {
    "node": ">=18.0.0"
  }
}

デフォルトで有効、環境変数で無効化できます:

bash
export FNM_RESOLVE_ENGINES=false

バージョン管理のベストプラクティス

1. プロジェクトレベルのバージョンロック

各プロジェクトに .node-version ファイルを作成:

bash
cd my-project
echo "20" > .node-version
fnm install
fnm use

2. チームコラボレーション

.node-version を Git に追加:

bash
git add .node-version
git commit -m "chore: add .node-version"

3. CI/CD 設定

CI/CD 環境で fnm を使用:

yaml
# GitHub Actions
- name: fnm をインストール
  run: curl -fsSL https://fnm.vercel.app/install | bash

- name: Node.js をインストール
  run: fnm install && fnm use

4. マルチバージョン開発

bash
# 複数のバージョンをインストール
fnm install 20
fnm install 18
fnm install 16

# 切り替えやすいようにエイリアスを設定
fnm alias 20 current
fnm alias 18 legacy
fnm alias 16 old

# 異なるプロジェクトで異なるバージョンを使用
cd project-new && fnm use current
cd project-old && fnm use legacy

バージョンをアンインストール

bash
# 特定のバージョンをアンインストール
fnm uninstall 16.20.2

# エイリアス経由でアンインストール(バージョンとすべての関連エイリアスを削除)
fnm uninstall old

よくある問題

バージョン切り替え後に node コマンドが更新されない

Shell 設定が正しいことを確認します:

bash
# node パスを確認
which node

# fnm ディレクトリを指している必要があります
# ~/.fnm/node-versions/.../bin/node

自動切り替えが機能しない

  1. Shell 設定に --use-on-cd が追加されていることを確認
  2. バージョンファイルが存在することを確認
  3. Shell 設定をリロード

バージョンファイルの優先順位

fnm は次の順序でバージョンを検索します:

  1. コマンドラインで指定されたバージョン
  2. .node-version ファイル
  3. .nvmrc ファイル
  4. package.jsonengines.node
  5. デフォルトバージョン

関連リンク