y-ohgi's blog

TODO: ここになにかかく

nodeのバージョン管理ツールnvmを試す

TL;DR

  • ローカルのnodeのバージョン管理ツールnvmを使う
  • 動機としてグローバルにnodeのバージョン管理を行いたかった
  • インストール時の設定が少なくバージョンコントロールが楽

About

今までは基本的にnodeはプロジェクト毎に使用しているバージョンが変わり、dockerを使用してバージョンコントロールをしていました。
そのため、ローカルにランタイムを入れること自体があまりなく、ローカルで使用する場合はvolta等でリポジトリ毎に使用バージョンの設定を行うことが多かったです。

しかし、バージョン管理ツールなどを使用しないことを前提としたリポジトリを複数扱うことが発生し、ローカルでグローバルでnodeのバージョンを切り替える機会が増えてきました。
現在私が横断組織として複数のプロダクトに関わっている関係上、ローカル環境はWSL2・Intel Mac・ARM Macなどなど複数存在し、本番ではAmazon Linux・Docker・Lambdaを使用するケースがあり、ローカルで複数のバージョンnodeを扱う必要が発生し、nvmにたどり着きました。

nvmについて

古くからあるメジャーなnodeのバージョン管理ツールであり、ご存じの方も多いと思います。
シェルスクリプトベースで、インストール方法やバージョンの設定をシンプルです。

Googleトレンド見てみると他のバージョン管理ツールより群を抜いているのが確認できます。

Versions

How to

nvmのInstall

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

nodeのInstall

まずはv20系のnodeのインストールを試してみます。

メジャーバージョンのみのインストールを実行

nvm install v20
nvm use v20

バージョンを確認するとlatestなバージョンがインストールされていることを確認できました。

node --version
v20.16.0

次にv22系のnodeのインストールを行います。

nvm install v22
nvm use v22

同じくlatestなバージョンが導入できていることを確認。

node -v
v22.6.0

Installしたランタイムのバージョンの確認

listサブコマンドで現在インストールされているバージョンと、defaultバージョンを確認できます。
どうやら最初にインストールしたnodeのバージョンがdefaultになるようです。

nvm list
->     v20.16.0
        v22.6.0
default -> 20 (-> v20.16.0)
  :

デフォルトのバージョンを変更します。

nvm alias default v22
nvm list
       v20.16.0
->      v22.6.0
default -> v22 (-> v22.6.0)

バージョンの確認で、v22に変更されたことを確認できました。

node -v
v22.6.0

所感

普段はDockerでnodeを扱っているのでnvmを初めてしようしました。
シンプルで使いやすくローカルのnodeのバージョン管理ツールとして優れていると感じました。
1点気になった点として、nvmがまだメジャーバージョンではないことは少し疑問に思いました。