fnmを使ってNode.jsをインストールする(Windows)
WindowsでNode.jsの開発環境を構築したい。
dockerでも良いが、勉強や実験用にサクッとNode.jsの開発環境を立ち上げる程度の用途なので、
fnmというバージョン管理ツールを使って、直接インストールしてしまおうと思う。
Node.jsのバージョン管理ツールとして何を使うか
満たしておきたい条件としては、
- 更新が止まってない
- プロジェクトごとにバージョンを自動で切り替えられる
の2点。この辺りの検討については、下記サイトを参考にさせていただいた
結果としては、「fnmを使おう」という結論に落ち着いた。
fnmのインストール
chocolateyでfnmをインストールする
# chocolateyでfnmをインストール > choco install fnm -y # インストール済のパッケージ一覧を表示 > choco list -localonly fnm 1.28.2
PowerShellの設定ファイルに必要事項を追記
ドキュメントによると、fnmを使う前にいくつかの実行しないといけないコマンドがあり、Microsoft.PowerShell_profile.ps1にコマンドを追加する必要があるとのこと。
Microsoft.PowerShell_profile.ps1とは??
Windowsを使い始めたばかりで、そもそも「Microsoft.PowerShell_profile.ps1って何?」となった。
Microsoft.PowerShell_profile.ps1は、Powershellの設定ファイルであり、bashの".bash_profile"に相当するものと考えれば良さそう。
このファイルは、Powershellが立ち上がるたびに実行される。
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を立ち上げてもエラーが出なくなった。
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
.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