fnm
GitHub概要
スター21,519
ウォッチ62
フォーク560
作成日:2019年1月16日
言語:Rust
ライセンス:GNU General Public License v3.0
トピックス
hacktoberfestjavascriptnodejsnvmreasonmlversion
スター履歴
データ取得日時: 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