しみゆーメモ

仕事のこと、子育てのこと、家事のこと、ただの日記、何でもかんでも書いておく場所

fnmを使ってNode.jsをインストールする(Windows)

WindowsでNode.jsの開発環境を構築したい。

dockerでも良いが、勉強や実験用にサクッとNode.jsの開発環境を立ち上げる程度の用途なので、

fnmというバージョン管理ツールを使って、直接インストールしてしまおうと思う。

Node.jsのバージョン管理ツールとして何を使うか

満たしておきたい条件としては、

  • 更新が止まってない
  • プロジェクトごとにバージョンを自動で切り替えられる

の2点。この辺りの検討については、下記サイトを参考にさせていただいた

qiita.com

結果としては、「fnmを使おう」という結論に落ち着いた。

fnmのインストール

chocolateyでfnmをインストールする

# chocolateyでfnmをインストール
> choco install fnm -y
# インストール済のパッケージ一覧を表示
> choco list -localonly
fnm 1.28.2

PowerShellの設定ファイルに必要事項を追記

github.com

ドキュメントによると、fnmを使う前にいくつかの実行しないといけないコマンドがあり、Microsoft.PowerShell_profile.ps1にコマンドを追加する必要があるとのこと。

Microsoft.PowerShell_profile.ps1とは??

Windowsを使い始めたばかりで、そもそも「Microsoft.PowerShell_profile.ps1って何?」となった。

Microsoft.PowerShell_profile.ps1は、Powershellの設定ファイルであり、bashの".bash_profile"に相当するものと考えれば良さそう。

このファイルは、Powershellが立ち上がるたびに実行される。

docs.microsoft.com

Microsoft.PowerShell_profile.ps1の確認と作成

$PROFILEという変数に、現在のセッションで使用できる設定ファイルのパスが格納されているので、PowerShellを開いて$PROFILE(小文字でもok)と打つと確認できる。

> $profile
C:\Users\〇〇〇〇〇〇\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

パスは設定されているものの、初期状態だとMicrosoft.PowerShell_profile.ps1自体は存在しなかった。

なので、Microsoft.PowerShell_profile.ps1を作成し、$PROFILEで出てきたパスの通りに配置する。

さらに、fnmのドキュメントに従って、下記を追加。

fnm env --use-on-cd | Out-String | Invoke-Expression

Microsoft.PowerShell_profile.ps1 を読み込めません」と怒られる

上の設定を終えて、PowerShellを立ち上げると、

C:\Users\〇〇〇〇〇〇\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 を読み込めません。
ファイル C:\Users\〇〇〇〇〇〇\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 はデジタル署名されていません。
このスクリプトは現在のシステムでは実行できません。
スクリプトの実行および実行ポリシーの設定の詳細については、
「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。

となって、スクリプトが実行できない。

PowerShellのポリシー

PowerShellでは、

でポリシーが異なるらしい。

デフォルトでは、ローカルのスクリプトも外部ファイルのスクリプトも実行不可(デジタル証明書で署名されたファイルは実行できる)。

そこで、ローカルのスクリプトのポリシーをRemoteSignedに変更した。

RemoteSigned

  • インターネットからダウンロードしたスクリプトのみデジタル署名を必要とする
  • ローカルで記述されたスクリプトにはデジタル署名を必要としない

というもの。

これで、ローカルスクリプトを実行できるようになったので、Powershellを立ち上げてもエラーが出なくなった。

docs.microsoft.com

fnmの使い方

fnmで使うNode.jsのバージョンをインストール

# 使いたいNode.jsのバージョンを指定してインストール
> fnm install 16.13.1
# fnmでインストールしたNode.jsのバージョン一覧を確認
> fnm list
* v16.13.1 default
* system

実際に使用するNode.jsのバージョンを指定

fnm installでインストールするだけでは、まだNodeを使えない。

fnm useコマンドで使用するバージョンを指定する必要がある。

# useで使用するバージョンを指定
> fnm use 16.13.1
Using Node v16.13.1
# バージョン確認(これでようやく使えるようになる)
> node -v
v16.13.1

プロジェクトごとに.node-versionファイルを設置

プロジェクトごとにバージョンを切り替えるために、プロジェクトディレクトリに.node-versionというファイルを配置する。

このファイルには、下記のように使用したいNode.jsのバージョンを記載。

v17.3.0

github.com

.node-versionファイルが配置されたディレクトリでは、fnmが自動的にNode.jsのバージョンが切り替えてくれる。

# 新たにNodeのバージョンとして17.3.0をインストール
> fnm install 17.3.0
# 17.3.0を使いたいプロジェクトに移動し、バージョンを切り替え
> fnm use 17.3.0
# 現在のバージョンを.node-versionに書き込みつつ、ファイルを生成
# これで、次回以降このディレクトリに移動すると自動的にNodeのバージョンが切り替わる
> node -v > .node-version