fnm について
fnm は、1台のマシンで複数の Node.js バージョンを管理するコマンドラインツールです。最新の LTS などをインストールし、1つのコマンドで使用バージョンを切り替え、ローカルにあるバージョンを一覧できます。Rust で書かれており、複数のプラットフォームで動作します。
主な機能
- 01fnm install --lts で最新の LTS をインストール
- 02fnm use 24 で使用する Node.js バージョンを切り替え
- 03fnm list でインストール済みのバージョンを一覧表示
- 04brew install fnm で Homebrew から導入
- 05組み合わせやすい CLI としてシェルスクリプトに組み込み可能
活用シーン
- 01ビルド前にプロジェクト指定の Node.js バージョンへ切り替える
- 02複数の Node.js リリースでパッケージをテストする
- 03新しいマシンで統一した Node.js 環境を整える
- 04コーディングエージェントがシェル内で Node のバージョンを切り替える
インストール
OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。
インストール後にfnm --versionを実行して確認します。
コマンド例
よく使うコマンドを使う順に並べています。
詳細
高速な Node.js バージョンマネージャー(fnm)
🚀 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)
- お使いのシステム向けの最新のリリースバイナリをダウンロードします
- 環境変数
PATHからグローバルに利用できるようにします - fnm 用にシェルを設定します
削除
fnm を削除するには(😢)、ホームディレクトリ内の .fnm フォルダーを削除するだけです。シェル設定から fnm に関する記述も削除してください(つまり、シェルの設定を読み、逆の手順を行ってください)。
補完機能
fnm の補完機能はバイナリに同梱されています。
fnm completions --shell <SHELL>
<SHELL> には、次のサポート対象シェルを指定できます。
bashzshfishpowershell
インストール方法については、お使いのシェルの手順に従ってください。
シェルの設定
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