LoginSignup
47

posted at

updated at

📗 Node.jsバージョン管理ツール「fnm」のインストール方法と使い方

🚀 fnm(Fast Node Manager) はWindowsユーザの方に一番おすすめなNode.jsのバージョン管理ツールです。

Windowsでは少々インストール作業が細かいので、実際の使い方も含めてこちらにまとめておきます。
なお、どんなツールも公式のREADME.mdが最も信頼できる正しいドキュメントなので、そちらも併せてご覧ください🌟

別のツールからの乗り換えの際は、元のバージョン管理ツールをしっかりアンインストールしてください🙏

Node.jsのバージョン管理ツールがなんだかわからない方はこちら:

fnmのどこが魅力的なのかはこちら:

1. まずはfnmのインストール

macOS/Linuxの場合は次のコマンドをインストールして終了です。

curl -fsSL https://fnm.vercel.app/install | bash

Windowsの場合

Chocolateyを利用します。
macOSで言うところのhomebrewなので、Windowsユーザの開発者の皆さんはぜひ導入しておきましょう💡

choco install fnm -y

続いて、プロファイルの設定です。

Windows PowerShell & PowerShell

PowerShellには2種類あります。
別途pwshをインストールしている場合は、そちらも同じように設定します(以下、PowerShell)。

Microsoft.PowerShell_profile.ps1
fnm env --use-on-cd | Out-String | Invoke-Expression

上記のコードをMicrosoft.PowerShell_profile.ps1に記載してください。

このファイルの保存先は、PowerShellで$profileと入力することで確認できます。
その位置にファイルが存在しなければ作成します。

例
$Profile
# > %HOMEPATH%/Documents/WindowsPowerShell/Microsoft.PowerShell_profile.ps1

💡 Microsoft.PowerShell_profile.ps1 って?
一派にプロファイルと呼ばれるもので、PowerShellが立ち上がるたびに実行されるものです。

コマンドプロンプト

まず、ホームディレクトリに.cmdrc.cmdファイルを作ります。

ホームディレクトリはwindow + rで「ファイル名を指定して実行」を開いたとき%HOMEPATH%と入力して開くディレクトリのことです。

そのディレクトリにcmdファイルを作成してください。
ファイル名は何でもよいのですが、ここでは便宜上.cmdrc.cmdとします。

このファイルは先ほどのレジストリ操作により、コマンドプロンプトが起動するたびに必ず実行されます。
このファイルの中身を次のように記述1して、作業は終了です。

.cmdrc.cmd
@ECHO OFF
REM Source: https://umi-uyura.hatenablog.com/entry/2021/09/30/083419

IF "%FNM_SETUP%"=="True" (
    EXIT /b
)

SET FNM_SETUP=True
FOR /f "tokens=*" %%z IN ('fnm env --use-on-cd') DO CALL %%z
続いて、レジストリを操作します。

レジストリがよくわからない人は触らないに越したことが無いですが、次のコードをPowerShellに入力するだけでOKです。

reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Command Processor" /v AutoRun /t "REG_SZ" /d "call c:%HOMEPATH%\.cmdrc.cmd" /f

上記の処理は、次の処理を行うものです。

  1. 操作対象:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Command Processor
  2. 文字列値を増やします:AutoRun
  3. 値を設定します:call c:%HOMEPATH%\.cmdrc.cmd

プロファイルでcallするファイルパスについて
1つ前のセクションで作ったcmdファイルの名前を.cmdrc.cmdではないものにした場合、AutoRunの値に指定するファイルパスを適宜調整してください。

Git Bash(相性が悪そう)

※ Git Bashでは自動で切り替わらず、切り替えることもできないようです(PowerShell依存)(アドバイスお待ちしております)
※ npmやyarnコマンドが正しく動作しません
※ Git Bashでecho $PATHと入力して出てきた値をバックアップしておくと安心かもしれません
※ Windowsのシステム環境変数とGit Bashは同期が取れていないことに注意してください

まず、システム環境変数がWindowsと共通になっていないため、共通化します。
PowerShellで$env:Pathと入力して出てきた値をすべてコピーしてください。

取得したパスを整形します。

before
# 例
C:\Program Files\PowerShell\7;C:\Python310\Scripts\;
  1. ;を:に置換
  2. \を/に置換
  3. C:/を/c/に置換
after
# 例
/c/Program Files/PowerShell/7:/c/Python310/Scripts/:

整形したパスを設定します。

%HOMEPATH%/.bash_profile
export PATH="ここにパス"

PowerShellでNode.jsのバージョンを切り替えます。

PowerShell
fnm use X.X.X

Git BashでもNode.jsのバージョンが変わってることを確認します。

GitBash
node -v

その他のシェル

fnmのREADME.mdを参照してください。

2. fnmでNode.jsをインストールする

v16.13.0をインストールする場合…

fnm install 16.13.0

インストールが終わったら、useで切り替えます。

fnm use 16.13.0
node -v # > v16.13.0
npm -v  # > v8.1.0

これでnodeとnpmコマンドが使えるようになります。

3. 各プロジェクトに.node-versionファイルを設置する

.node-versionまたは.nvmrcファイルがあるディレクトリでは、自動的にNode.jsのバージョンが変化します。
指定されたバージョンがインストールされていないと、fnmが自分から「○○のバージョンがないけどインストールしていい?」って聞いてきてくれるので、特に意識せずに作業をすることができます。

プロジェクトのルートでfnm useを使って好きなNode.jsのバージョンに切り替えた後、次のコマンドで.node-versionファイルを生成してコミットしておきましょう🌟

node -v > .node-version

終わりに

macOSではn推しですが、Windowsではfnmが一押しです!
バージョン管理ツールを決めかねてる方はぜひfnmを使ってみてはいかがでしょうか。

参考文献

  1. 2バイト文字を入力するときは、Shift_JISで保存しなければなりません。 ↩

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
47