Windows環境で新しくNode.jsのバージョン管理ツールを導入する機会があったので、fnmを試してみました。
設定方法
Windows環境でのインストールの場合、パッケージ管理ツールのScoopやChocolatey、Cargoなどを使ってインストールするようです。
今回はChocolateyを使うので、まずはChocolateyのインストールを行います。
Chocolatey公式のインストールページにアクセスします。
Step1はメールマガジンの登録、Step2はインストールする対象を選択します。(今回は個人なのでIndividual)
その下にインストール方法の記載がありますが、手順2の下にあるコードをコピペしておいてください。
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
Windowsのスタートボタンを右クリックして、Windows PowerShell(管理者)(A) を選択します。
先ほどコピペしたコードを張り付けて実行します。
インストール完了後、下記を実行してバージョン情報などが表示されていればOKです。
choco
これでChocolateyの準備が完了したので、fnmのインストールを行います。
引き続き管理者権限のPowerShellで下記を実行します。
choco install fnm
次にfnm用のシェルを設定します。
設定方法はいくつかありますが、今回はコマンドプロンプトで使用する想定の設定になります。
引き続きPowerShellで下記を実行します。
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Command Processor" /v AutoRun /t "REG_SZ" /d "call c:%HOMEPATH%\.cmdrc.cmd" /f
これでコマンドプロンプト起動時に.cmdrc.cmdの処理を行うようになりました。
Windowsキー + R で ファイル名を指定して実行を開き、以下を実行します。
%HOMEPATH%
開いたフォルダ内に.cmdrc.cmdというファイルを作成して、以下の内容にします。
@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
これでfnmを使う準備ができました。
使い方
インストールできるバージョンの一覧を確認してみます。
コマンドプロンプトを開いて下記を実行します。
fnm list-remote
インストールできるバージョンの一覧が確認できました。
インストールする場合は「fnm install 【バージョン指定】」のようにします。
fnm install v16.14.2
バージョンの切り替えは「fnm use 【バージョン指定】」のようにします。
fnm use 16.14.2
インストール済みのバージョンの確認は以下になります。
fnm ls
最後にバージョンの自動切換えを試してみます。
新しく作成したフォルダに.node-versionを設置して、以下の内容にします。
v17.9.0
作成したフォルダにコマンドプロンプトで移動すると、以下のように表示されました。
Can't find an installed Node version matching v17.9.0. Do you want to install it? answer [y/n]:
.node-versionで指定されているバージョンがまだインストールされていない場合、インストールするかどうかを確認されます。
yと入力すると17.9.0のバージョンがインストールされます。
別のフォルダに.node-versionを設置して、先ほどインストールしたバージョンを指定してみます。
v16.14.2
このフォルダに移動した場合は以下のように表示され、自動的に指定したバージョンに切り替わります。
Using Node v16.14.2
コメントが承認されるまで時間がかかります。