
写真提供:Bill Jelen | Unsplash
WindowsでPowerShell、Git Bash、コマンドプロンプト用にfnmをインストールする方法
fnm(Fast Node Manager)を使用すると、複数の Node.js バージョンを簡単に管理できます。インストール自体は簡単ですが、Windows の各シェルで設定するには追加の手順が必要です。
fnm はwingetかchocolateyからインストールできます:
winget install Schniz.fnm
# または
choco install fnm
インストール後、使用したい Node のバージョンをインストールします。ここでは例としてバージョン 22 を使用します。
fnm install 22
この状態で新しいシェルを開いてnode --version
を実行すると、「The term 'node' is not recognized as the name of a cmdlet, function, script file, or operable program.」というエラーが表示されます。

これは、fnm が Node のバージョンを切り替える際に PATH を動的に変更する必要があるためです。Windows の環境変数で静的な PATH を設定するだけでは不十分です。
解決策は、各シェルセッションの開始時にfnm env --use-on-cd
を実行することです。
PowerShell
PowerShell を管理者として開きます。Start ボタンを右クリックして「Windows PowerShell (Admin)」を選択してください。
まだ設定していない場合は、スクリプトの実行を有効にします。
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
PowerShell プロファイルを作成または編集します:
notepad $PROFILE
PowerShell プロファイルが既に存在する場合は開きます。存在しない場合は、新しい空のプロファイルファイルが作成されます。
プロファイルの末尾に以下の行を追加します。
fnm env --use-on-cd --shell powershell | Out-String | Invoke-Expression
ファイルを保存して閉じます。プロファイルは新しい PowerShell セッションを開始するたびに自動的に再読み込みされるため、変更を反映するには PowerShell を一度閉じて開き直す必要があります。
node --version
を実行して動作を確認できます。私の場合、現在のバージョン「v22.13.1」が表示されます。
Git Bash
以下の設定は Git Bash で行う必要があるため、新しい Git Bash セッションを開始してください。
.bashrc
を作成または編集します。先にtouch
を実行する理由は、ファイルが存在しない場合、Notepad が自動的に.bashrc.txt
として作成してしまうためです。~/.bashrc
が既に存在する場合、touch
は何も行いません。
touch ~/.bashrc
notepad ~/.bashrc
.bashrc
ファイルの末尾に以下の行を追加します:
eval "$(fnm env --use-on-cd --shell bash)"
PowerShell と同様に、変更を反映するには Git Bash を一度閉じて開き直す必要があります。新しい Git Bash セッションを開始し、node --version
で確認してください。
コマンドプロンプト
コマンドプロンプトには他のシェルのようなプロファイルスクリプトがありません。代わりに、レジストリを使用して同様の動作を実現します。
コマンドプロンプトの設定を行いますが、実際の設定には PowerShell を使用するため、新しい PowerShell セッションを開始してください。
まず、ユーザーディレクトリにprofile.cmd
を作成します。以下のスクリプトでは、「XXX」を Windows のユーザー名に置き換えてください。
$profileContent = @"
@echo off
if not defined FNM_AUTORUN_GUARD (
set "FNM_AUTORUN_GUARD=AutorunGuard"
FOR /f "tokens=*" %%z IN ('fnm env --use-on-cd') DO CALL %%z
)
"@
Set-Content -Path "C:\Users\XXX\profile.cmd" -Value $profileContent
次に、以下のコマンドを実行してAutoRun
レジストリキーを設定します。ここでも「XXX」を Windows のユーザー名に置き換えてください。
Set-ItemProperty -Path "HKLM:\Software\Microsoft\Command Processor" -Name "AutoRun" -Value "C:\Users\XXX\profile.cmd"
新しいコマンドプロンプトを開始し、node --version
で確認してください。