先日初めてローカル環境にnode.jsをインストールしました。cloudshellやdockerなどだと最初からインストールされているのでローカル環境でnpm
が動かないことが衝撃でした。公式のダウンロードページではfnm
を使ったインストールが紹介されており、fnm
が便利だったのでご紹介します。
fnmとは
fnmは複数のnode.jsのバージョンを管理するパッケージマネージャーです。例えばプロジェクトAではnode.jsのv19を使っており、新しく始まるプロジェクトBではnode.jsのv20を使うとします。手動でnode.jsをインストールしていた場合、それぞれのプロジェクトに合ったバージョンのnode.jsを選択して動かす必要があります。環境変数をイチイチ切り替えたりするのは面倒です。
fnmではそれぞれのプロジェクトで使うnode.jsのバージョンを設定でき、バージョンを意識することなくnode.jsを動かすことができます。新しいバージョンのnode.jsがリリースされた場合もfnmから簡単にインストールすることができます。
fnmのインストール
以下のコマンドでインストールすることができます。
- Windows
winget install Schniz.fnm
- Linux、MacOS
curl -fsSL https://fnm.vercel.app/install | bash
source ~/.bashrc
node.jsのインストール
node.jsはOSに関係なく以下のコマンドでインストールできます。最後の20の部分はバージョンの指定です。特にこだわりが無ければ最新のLTSのバージョンにしておきましょう。
fnm use --install-if-missing 20
プロジェクトごとのnode.jsのバージョン指定
プロジェクトのルートディレクトリに.node-version
というファイルを作成し、以下のように使用するバージョンを記述します。
v20.17.0
記述されているバージョンがインストールされていない場合は以下のようにインストールするか確認されます。
Can't find an installed Node version matching v20.17.0.
Do you want to install it? answer [y/N]:
Windowsでの設定
公式のダウンロードページではfnmをインストール後に以下のコマンドを入力するように書いてあります。
fnm env --use-on-cd | Out-String | Invoke-Expression
これはプロジェクトごとに指定されたnode.jsのバージョンを使いますというPowerShellのコマンドです。PowerShellでこのコマンドを入力しておけばディレクトリを切り替えるだけでプロジェクトに合ったnode.jsのバージョンに自動的に切り替わります。しかし、毎回このコマンドをPowerShellで入力しないといけません。それはとても面倒なのでPowerShellの起動スクリプトに組み込んでおくと楽です。
PowerShellの起動スクリプトの修正
PowerShellのプロンプトで$profile
と入力すると起動スクリプトのpathが表示されます。pathのファイルが存在しなければ作成し、存在すれば追記してください。
まとめ
node.jsのパッケージ管理ツールfnmについてご紹介しました。node.jsを設定しておくと環境構築する際に出番の多いnpm
とnpx
が使えるようになり便利です。fnmを使うことで環境の切り替えの手間を省き、新しいバージョンもすぐ使えるようになります。
コメント