fnm

バージョン管理Node.jsJavaScript開発環境CLIRust

GitHub概要

Schniz/fnm

🚀 Fast and simple Node.js version manager, built in Rust

ホームページ:https://fnm.vercel.app
スター21,519
ウォッチ62
フォーク560
作成日:2019年1月16日
言語:Rust
ライセンス:GNU General Public License v3.0

トピックス

hacktoberfestjavascriptnodejsnvmreasonmlversion

スター履歴

Schniz/fnm Star History
データ取得日時: 2025/7/20 02:18

言語バージョン管理ツール

fnm(Fast Node Manager)

概要

fnmは、Rustで実装された高速なNode.jsバージョン管理ツールです。nvmと互換性を保ちながら、より高速な動作とクロスプラットフォーム対応を実現しています。シンプルなバイナリファイルとして提供され、インストールと使用が簡単です。

詳細

主な特徴

  • 超高速: Rust実装により起動とバージョン切り替えが高速
  • クロスプラットフォーム: Windows、macOS、Linuxで動作
  • .nvmrc/.node-version対応: nvmとの互換性
  • シンプルなバイナリ: 単一の実行ファイルで動作
  • 自動インストール: useコマンドで未インストールバージョンを自動取得
  • 並列ダウンロード: 高速なバージョンインストール

アーキテクチャ

fnmはRustで書かれており、システムコールを直接使用してパフォーマンスを最適化しています。各Node.jsバージョンは独立したディレクトリに保存され、シンボリックリンクで管理されます。

サポートシェル

  • Bash: 完全サポート
  • Zsh: 完全サポート
  • Fish: 完全サポート
  • PowerShell: Windows環境で完全サポート
  • Windows Command Prompt: 基本的なサポート

メリット・デメリット

メリット

  • 圧倒的な速度: nvmと比較して10倍以上高速な起動
  • Windows対応: ネイティブWindows環境で動作
  • メモリ効率: 最小限のメモリ使用量
  • 簡単なインストール: パッケージマネージャーで簡単導入
  • nvm互換: 既存の.nvmrcファイルがそのまま使える
  • モダンな実装: Rustによる安全で効率的なコード

デメリット

  • 機能限定: nvmの一部の高度な機能は未実装
  • 歴史が浅い: nvmと比較して実績が少ない
  • カスタマイズ性: nvmほど柔軟な設定オプションがない
  • コミュニティ: nvmと比較してユーザーベースが小さい
  • プラグインなし: 拡張機能のシステムがない

参考ページ

書き方の例

インストール

# macOS/Linux(Homebrewを使用)
brew install fnm

# macOS/Linux(インストールスクリプト)
curl -fsSL https://fnm.vercel.app/install | bash

# Windows(Scoop)
scoop install fnm

# Windows(Chocolatey)
choco install fnm

# Cargo(Rust)を使用
cargo install fnm

# Arch Linux
pacman -S fnm

シェル設定

# Bash(.bashrcに追加)
eval "$(fnm env --use-on-cd)"

# Zsh(.zshrcに追加)
eval "$(fnm env --use-on-cd)"

# Fish(~/.config/fish/config.fishに追加)
fnm env --use-on-cd | source

# PowerShell(プロファイルに追加)
fnm env --use-on-cd | Out-String | Invoke-Expression

# 設定を反映
source ~/.bashrc  # または該当するシェル設定ファイル

基本的な使い方

# 利用可能なNode.jsバージョンの一覧表示
fnm list-remote

# LTSバージョンのみ表示
fnm list-remote --lts

# 最新バージョンのインストール
fnm install --latest

# LTSバージョンのインストール
fnm install --lts

# 特定バージョンのインストール
fnm install 20.11.0
fnm install 18.19.0

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

# 現在のバージョン確認
fnm current
node --version

バージョン切り替え

# 特定バージョンに切り替え
fnm use 20.11.0

# システムNode.jsに切り替え
fnm use system

# デフォルトバージョンの設定
fnm default 20.11.0

# インストールと使用を同時に実行
fnm use 18.19.0 --install-if-missing

プロジェクトごとの管理

# プロジェクトディレクトリに移動
cd /path/to/my-project

# .nvmrcファイルを作成(nvmと互換)
echo "20.11.0" > .nvmrc

# または.node-versionファイルを作成
echo "20.11.0" > .node-version

# 自動的にバージョンが切り替わる(--use-on-cd設定時)
cd /path/to/my-project
# Using Node.js v20.11.0

# 手動で.nvmrcのバージョンを使用
fnm use

高度な使い方

# 複数のNode.jsを同時にインストール
fnm install 18 19 20

# エイリアスの作成
fnm alias 20.11.0 lts-iron
fnm alias 18.19.0 production

# エイリアスを使用
fnm use lts-iron

# エイリアスの削除
fnm unalias lts-iron

# Node.jsバージョンのアンインストール
fnm uninstall 16.20.2

# すべてのバージョンを表示(エイリアス含む)
fnm list --all

環境変数とオプション

# ログレベルの設定
export FNM_LOGLEVEL=debug

# Node.jsのダウンロードミラーを設定
export FNM_NODE_DIST_MIRROR=https://nodejs.org/dist

# インストールディレクトリの変更
export FNM_DIR="$HOME/.fnm-custom"

# Corepackの自動有効化
export FNM_COREPACK_ENABLED=true

# バージョン切り替え時の出力を抑制
export FNM_VERSION_FILE_STRATEGY=local

パフォーマンス比較

# fnmの起動時間測定
time fnm --version

# nvmとの比較(nvmがインストールされている場合)
time nvm --version

# バージョン切り替えの速度比較
time fnm use 20.11.0
time nvm use 20.11.0

トラブルシューティング

# 設定の確認
fnm env

# 現在の設定パスを表示
fnm list --show-path

# キャッシュのクリア
rm -rf $(fnm env | grep FNM_DIR | cut -d'"' -f2)/node-versions

# 再インストール
fnm install --force 20.11.0