📚

fnm(Fast Node Manager)の導入方法

2022/09/17に公開

はじめに

  • fnmを入れるとNodeのバージョン切り替えがしやすくなります。
  • この記事ではインストール方法と簡単な使い方を紹介します。
  • 簡潔にまとめたものなので、もっと詳しい情報を知りたい方は参考記事を参照してください。

前提

  • OS:Windows10 or 11
  • PowerShellで操作
  • Chocolateyでインストールする

概要

fnm(Fast Node Manager) はNode.jsのバージョン管理ツールです

良い点

  • 自動切り替えに対応している
  • メンテナンスされている

https://github.com/Schniz/fnm


インストール方法

  1. Chocolateyが入っていない場合はインストールする

    • 補足:ソフトを使わずにPowerShellでインストールも可能
  2. 管理者権限でPowerShellを起動し、下記コマンド実行

    cinst fnm -y
    
  3. プロファイルを作成

    Microsoft.PowerShell_profile.ps1
    fnm env --use-on-cd | Out-String | Invoke-Expression
    
  4. プロファイルを配置
    Microsoft.PowerShell_profile.ps1 の格納場所は PowerShell で $profile と入力すると確認できます。 すでにファイルがある場合はコマンドを追記してください。

    # Windows PowerShell
    C:\Users<ユーザー名>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
    # PowerShell
    C:\Users<ユーザー名>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
    
  5. インストールの確認
    a. fnm -Vを実行し、バージョンが表示されればOK

※コマンドプロンプトで設定したい場合の手順

  1. レジストリに登録
    reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Command Processor" /v AutoRun /t "REG_SZ" /d "call c:%HOMEPATH%\.cmdrc.cmd" /f
    
  2. Win+Rキーで検索を開き「%HOMEPATH%」を検索してフォルダを開く
  3. .cmdrc.cmdというファイルを作成(すでにある場合は不要)
  4. ファイルに下記を記述して保存
    @ECHO OFF
    IF "%FNM_SETUP%"=="True" (
        EXIT /b
    )
    SET FNM_SETUP=True
    FOR /f "tokens=*" %%z IN ('fnm env --use-on-cd') DO CALL %%z
    

使用方法

インストールできるバージョン一覧

```powershell
fnm list-remote
```

インストール

```powershell
fnm install {version}
```

アンインストール

```powershell
fnm uninstall {version}
```

利用するバージョンの指定

```powershell
fnm use {version}

# デフォルトのバージョンを指定する場合
fnm default {version}
```

利用するバージョンの確認

```powershell
fnm current

# 一覧で確認
fnm list
```

プロジェクトで利用する Node.js のバージョンを変更する

プロジェクトのルートディレクトリに利用したい Node.js のバージョンを記述した .node-version ファイルを設置しておくと自動的にバージョンを変更してくれます。

```node-version:.node-version
v18.9.0
```

コマンドから.node-versionファイルを生成したい場合
powershell node -v > .node-version


参考記事

https://qiita.com/heppokofrontend/items/5c4cc738c5239f4afe02
https://qiita.com/heppokofrontend/items/fe1c3bc41a0ae943c2ca
https://qiita.com/taqumo/items/b25d486e6ead9f38a13d
https://cly7796.net/blog/other/try-using-fnm/

Discussion