Nodeバージョン管理ツールを導入してみる

恥ずかしながら nodeのバージョン管理ツールを使っていなかったので、重い腰を上げて導入してみることに。
勉強教材と環境を合わせる時など、小さなところで活躍してくれるかもと思ったので、さっそくチャレンジ!

パッケージ選定

私は Win民なのでWindowsで動作することが大前提。 その中から以下をひとまずピックアップ。

PackageStarRelease
nvm-windows23.1k21/12/11
nvs2.1k22/4/20
volta6.6k22/6/2
fnm8.7k22/7/19

いろいろググった結果、fnmとVoltaで迷う。
nvm-windowsは自動切り換えしてくれないとかで使い勝手が悪そう、nvsは使用人口少なめなので除外。

  • fnm
    ScoopかChocolateyかCargoを使用してインストール
    .node-version.nvmrcで動作

  • Volta
    インストーラを使用してインストール
    package.jsonで動作

私の中ではVoltaよさそうだな~と思ったけど、先人たちは .node-version.nvmrc でのバージョン切り替えを捨てるにはまだ早いとの見解ぽい。
導入コストとか考えるとVoltaが普及するのはもう少し先かなと思うので、fnmを選択するのがよさげ。

てことでfnmにします🚀

node.jsとnpmの完全削除

あとからバージョンマネージャーを導入する場合は、一度node.jsとnpmを削除したほうがいいよってMicroSoftさんがゆうてるから削除します。

バージョン マネージャーをインストールする前に、ご利用のオペレーティング システムからNode.jsまたはnpmの既存のインストールを削除することをお勧めします。インストールの種類が異なると、奇妙で混乱を招く競合が発生する可能性があるためです。

NodeJSをネイティブWindows上に設定する | Microsoft Learn

上記引用元でも紹介されているこちらのStackOverflow通りにしたらできました🤗

fnmを導入する

まずはパッケージマネージャーをいれる

今回はChocolateyを選択。
ちなみにWin純正のwingetっていうのが最近登場したとのこと。
そっちがいい~~と思ったけど、まだ新米くんなのでfnmは未対応…
またしばらくしたらwingetも導入してみよう。

公式docの通りにインストーーる🚀

fnm をインストール

command
choco install fnm

私はPowerShellを使っているので、$PROFILEとたたいて表示されたディレクトリへ移動。(管理者用のPowerShellで!!!)
Microsoft.PowerShell_profile.ps1ファイルを作成して、fnmさんに書けよ!って言われてる中身を記述。

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

そしたらちゃんとfnmがインストールされてるかを確認。

command
fnm -V
> fnm 1.31.1

ちゃんとインストールできてます

Node.jsをインストール

まずは利用できるNode.jsのバージョンを確認

command
fnm list-remote

ずらーっと出てくるので、好きなの選んでインストールした後に切り替える

command
fnm install 18.9.0
fnm use 18.9.0

ちゃんと使えるか確認

command
node -v
> v18.9.0
npm -v
> 8.19.1

おけまる

Node.jsの切り替えを体験してみる

.node-version または .nvmrcファイルがあれば、fnmが読み取ってnode.jsのバージョンを自動で切り替えてくれるらしい
なので試しにtestフォルダに .node-versionファイルを作成し、v17.0.0とだけ記述。
testディレクトリへ移動してみると…

command
Can't find an installed Node version matching v17.0.0.
Do you want to install it? answer [y/n]:

ってことで、「そのバージョンのnode.jsもってないけど、インストールする?」って聞いてくれるので全力でYes!!!!!
また、.node-versionファイルは以下のコマンドで作成できるらしい。

command
node -v > .node-version

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

その他のfmsコマンドはこちら。

fnm/commands.md at master · Schniz/fnm

おわり

はじめてNode.jsをインストールしたとき、なんかよく分からんし誰かと開発しないから~~ってバージョン管理を導入してなかった自分を引っ叩きます😊
これからもう少しVoltaが浸透したら、Voltaにも挑戦してみようと思います。

それでは、 ☁️ ぼんっ

参考サイト