Nodeバージョン管理ツールを導入してみる
恥ずかしながら nodeのバージョン管理ツールを使っていなかったので、重い腰を上げて導入してみることに。
勉強教材と環境を合わせる時など、小さなところで活躍してくれるかもと思ったので、さっそくチャレンジ!
パッケージ選定
私は Win民なのでWindowsで動作することが大前提。 その中から以下をひとまずピックアップ。
Package | Star | Release |
---|---|---|
nvm-windows | 23.1k | 21/12/11 |
nvs | 2.1k | 22/4/20 |
volta | 6.6k | 22/6/2 |
fnm | 8.7k | 22/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の既存のインストールを削除することをお勧めします。インストールの種類が異なると、奇妙で混乱を招く競合が発生する可能性があるためです。
上記引用元でも紹介されているこちらのStackOverflow通りにしたらできました🤗
fnmを導入する
まずはパッケージマネージャーをいれる
今回はChocolateyを選択。
ちなみにWin純正のwingetっていうのが最近登場したとのこと。
そっちがいい~~ と思ったけど、まだ新米くんなのでfnmは未対応…
またしばらくしたらwingetも導入してみよう。
公式docの通りにインストーーる🚀
fnm をインストール
choco install fnm
私はPowerShellを使っているので、$PROFILE
とたたいて表示されたディレクトリへ移動。(管理者用のPowerShellで!!!)
Microsoft.PowerShell_profile.ps1ファイルを作成して、fnmさんに書けよ!って言われてる中身を記述。
fnm env --use-on-cd | Out-String | Invoke-Expression
そしたらちゃんとfnmがインストールされてるかを確認。
fnm -V
> fnm 1.31.1
ちゃんとインストールできてます
Node.jsをインストール
まずは利用できるNode.jsのバージョンを確認
fnm list-remote
ずらーっと出てくるので、好きなの選んでインストールした後に切り替える
fnm install 18.9.0
fnm use 18.9.0
ちゃんと使えるか確認
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ディレクトリへ移動してみると…
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ファイルは以下のコマンドで作成できるらしい。
node -v > .node-version
Qiita - 各プロジェクトにnode-versionファイルを設置する
その他のfmsコマンドはこちら。
fnm/commands.md at master · Schniz/fnm
おわり
はじめてNode.jsをインストールしたとき、なんかよく分からんし誰かと開発しないから~~ってバージョン管理を導入してなかった自分を引っ叩きます😊
これからもう少しVoltaが浸透したら、Voltaにも挑戦してみようと思います。
それでは、 ☁️ ぼんっ