mcpField
F
fnm

fnm

公式
github.com開発ツール27.2kfnm2 日前に更新
リポジトリ公式サイト

fnm について

fnm は、1台のマシンで複数の Node.js バージョンを管理するコマンドラインツールです。最新の LTS などをインストールし、1つのコマンドで使用バージョンを切り替え、ローカルにあるバージョンを一覧できます。Rust で書かれており、複数のプラットフォームで動作します。

主な機能

  1. 01fnm install --lts で最新の LTS をインストール
  2. 02fnm use 24 で使用する Node.js バージョンを切り替え
  3. 03fnm list でインストール済みのバージョンを一覧表示
  4. 04brew install fnm で Homebrew から導入
  5. 05組み合わせやすい CLI としてシェルスクリプトに組み込み可能

活用シーン

  1. 01ビルド前にプロジェクト指定の Node.js バージョンへ切り替える
  2. 02複数の Node.js リリースでパッケージをテストする
  3. 03新しいマシンで統一した Node.js 環境を整える
  4. 04コーディングエージェントがシェル内で Node のバージョンを切り替える

インストール

OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。

$
brew install fnm

インストール後にfnm --versionを実行して確認します。

コマンド例

よく使うコマンドを使う順に並べています。

01
fnm install --lts
02
fnm use 24
03
fnm list

詳細

高速な Node.js バージョンマネージャー(fnm) ダウンロード数 GitHub Actions ワークフローのステータス

🚀 Rust で構築された、高速でシンプルな Node.js バージョンマネージャー

驚きの速さ!

特長

🌎 クロスプラットフォーム対応(macOS、Windows、Linux)

✨ 単一ファイルで簡単にインストールでき、すぐに起動

🚀 速度を重視して構築

📂 .node-version と .nvmrc ファイルに対応

インストール

スクリプトを使用(macOS/Linux)

bash、zsh、fish シェル向けの自動インストールスクリプトがあります。

まず、オペレーティングシステムに curl と unzip がインストールされていることを確認してください。その後、次を実行します。

curl -fsSL https://fnm.vercel.app/install | bash
アップグレード

macOS では、brew upgrade fnm を実行するだけです。

その他のオペレーティングシステムでは、fnm のアップグレード方法はインストール方法とほぼ同じです。シェル設定ファイルへの重複を防ぐには、インストールコマンドに --skip-shell を渡してください。

curl -fsSL https://fnm.vercel.app/install | bash -s -- --skip-shell
パラメーター

--install-dir

fnm のインストール先としてカスタムディレクトリを指定します。デフォルトは $XDG_DATA_HOME/fnm です($XDG_DATA_HOME が定義されていない場合、Linux では $HOME/.local/share/fnm、MacOS では $HOME/Library/Application Support/fnm が使用されます)。

注: macOS では、Homebrew がデフォルトのインストール方法のため、このオプションは --force-install を使用する場合にのみ意味があります。

--skip-shell

$SHELL で定義されている現在のユーザーのシェルに応じて、シェル固有のローダーをシェル設定ファイルに追加しないようにします。例:Bash の場合は $HOME/.bashrc、Zsh の場合は $HOME/.zshrc、Fish の場合は $HOME/.config/fish/conf.d/fnm.fish です。

--force-install

インストールスクリプトを使った macOS へのインストールは、Homebrew の formula を使う方法が推奨されるため非推奨ですが、このオプションを指定すると、スクリプトによるインストールを強制します。

例:

curl -fsSL https://fnm.vercel.app/install | bash -s -- --install-dir "./.fnm" --skip-shell
手動でインストール
Homebrew を使用(macOS/Linux)
brew install fnm

その後、fnm 用にシェルを設定してください。

Winget を使用(Windows)
winget install Schniz.fnm
Scoop を使用(Windows)
scoop install fnm

その後、fnm 用にシェルを設定してください。

Chocolatey を使用(Windows)
choco install fnm

その後、fnm 用にシェルを設定してください。

Cargo を使用(Linux/macOS/Windows)
cargo install fnm

その後、fnm 用にシェルを設定してください。

リリースバイナリを使用(Linux/macOS/Windows)
削除

fnm を削除するには(😢)、ホームディレクトリ内の .fnm フォルダーを削除するだけです。シェル設定から fnm に関する記述も削除してください(つまり、シェルの設定を読み、逆の手順を行ってください)。

補完機能

fnm の補完機能はバイナリに同梱されています。

fnm completions --shell <SHELL>

<SHELL> には、次のサポート対象シェルを指定できます。

  • bash
  • zsh
  • fish
  • powershell

インストール方法については、お使いのシェルの手順に従ってください。

シェルの設定

fnm を使い始める前に、環境変数を設定する必要があります。 これは fnm env の出力を評価することで行います。

ヒント

実行時のシェル推定に頼るのではなく、シェルを明示的に指定する(例:fnm env --shell bash)ことをおすすめします。少し高速になり、プロセスツリーの検出も不要になります。

メモ

設定のセクションを確認し、自動バージョン切り替えなどの 強く推奨される機能を有効にしてください。

プロジェクトに .node-version を追加するのは簡単です。

$ node --version
v14.18.3
$ node --version > .node-version

お使いのシェルに応じて、次のガイドを確認してください。

Bash

.bashrc プロファイルに次の内容を追加します。

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

.zshrc プロファイルに次の内容を追加します。

eval "$(fnm env --use-on-cd --shell zsh)"
Fish シェル

~/.config/fish/conf.d/fnm.fish を作成し、次の行を追加します。

fnm env --use-on-cd --shell fish | source
PowerShell

プロファイルファイルの末尾に次の内容を追加します。

fnm env --use-on-cd --shell powershell | Out-String | Invoke-Expression
  • macOS/Linux の場合、プロファイルは ~/.config/powershell/Microsoft.PowerShell_profile.ps1 にあります。
  • Windows の場合、場所は次のいずれかです。
    • %userprofile%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1(Powershell 5)
    • %userprofile%\Documents\PowerShell\Microsoft.PowerShell_profile.ps1(Powershell 6 以降)
  • プロファイルファイルを作成するには、PowerShell で次を実行します。
    if (-not (Test-Path $profile)) { New-Item $profile -Force }
    
  • プロファイルを編集するには、PowerShell で次を実行します。
    Invoke-Item $profile
    
Windows コマンドプロンプト(Batch、WinCMD とも呼ばれます)

fnm もサポートされていますが、完全には対応していません。cmd.exe または Windows Terminal 用の起動スクリプトを設定し、次の行を追加できます。

@echo off
:: for /F will launch a new instance of cmd so we create a guard to prevent an infnite loop
if not defined FNM_AUTORUN_GUARD (
    set "FNM_AUTORUN_GUARD=AutorunGuard"
    FOR /f "tokens=*" %%z IN ('fnm env --use-on-cd') DO CALL %%z
)
Cmder での使用方法

通常の WinCMD のインストール方法とよく似ていますが、cmder の起動スクリプトから呼び出せるように、いくつか調整が必要です。この例では、CMDER_ROOT 環境変数が Cmder のインストール先のルートディレクトリに設定されていることを前提としています。 そのうえで、次のようにします。

  • 呼び出し用の .cmd ファイルを作成します。
:: %CMDER_ROOT%\bin\fnm_init.cmd
@echo off
FOR /f "tokens=*" %%z IN ('fnm env --use-on-cd') DO CALL %%z
  • 起動スクリプトに追加します。
:: %CMDER_ROOT%\config\user_profile.cmd
call "%CMDER_ROOT%\bin\fnm_init.cmd"

%CMDER_ROOT% は、使いやすいほかのパスに置き換えることもできます。

設定

利用可能な設定オプションについて、詳しい設定ドキュメントをご覧ください

使用方法

利用可能なコマンドについて、詳しい使用方法のドキュメントをご覧ください

コントリビューション

PR を歓迎します :tada:

開発:
# Install Rust
git clone https://github.com/Schniz/fnm.git
cd fnm/
cargo build
バイナリの実行:
cargo run -- --help # Will behave like `fnm --help`
テストの実行:
cargo test

コメント