↗️

nodenvでnodeのバージョンアップをする

2024/07/12に公開

現在利用している node バージョンを確認する

$ nodenv version

20.10.0(sey by /your/local/path)

利用可能な Node.js バージョンの一覧を表示

$ nodenv install -l

nodenv 本体のアップデート

※もし上の利用可能な Node.js バージョンの一覧にインストールしたいバージョン番号が存在しなかった場合、 nodenv そのものを最新バージョンに上げる必要がある。もし目当てのバージョン番号が存在した場合、本ステップはスキップ可能。

Homebrew を使用してインストールしていた場合

# もし Homebrew でインストールしていたなら、これでひっかかるはず。
$ brew list | grep nodenv

# brew 本体をアップデート
brew update

# nodenv をアップデート(これで同時に node-build もアップデートされる)
brew upgrade nodenv

# シムリンクを更新する。
$ nodenv rehash

Git を使用してインストールしていた場合

cd $(nodenv root)
cd ../nodenv
git pull

cd $(nodenv root)/plugins/node-build
git pull

nodenv rehash

目当てのバージョン番号が存在するか確認する

$ nodenv install -l

インストールとバージョンの切り替え

以下はバージョン番号 20.15.1 に変える際の方法。ここを目当てのバージョン番号に入れ替えて実行する。

$ nodenv install 20.15.1
$ nodenv global 20.15.1
$ nodenv rehash

必要なツールの再インストール

動作確認のため、普段開発しているGitリポジトリで pnpm install を試みたところ、 nodenv: pnpm: command not found とエラーが出た。再インストールする。

$ npm install -g pnpm

補足

なぜ node rehash というコマンドが最後に必要なのか。
本コマンドは、nodenv が管理する Node.js バージョンの変更に伴って必要となるシムリンク(シンボリックリンク)を再作成するためのコマンドである。具体的には、以下のような状況で必要になる。

新しいバージョンの Node.js をインストールしたとき:

そのバージョンに関連するエグゼキュータブルファイル(例: node, npm, npx など)のシムリンクを作成する必要がある。

Node.js のバージョンを切り替えたとき:

nodenv global コマンドでグローバルバージョンを変更した際にも、新しいバージョンのエグゼキュータブルファイルを適切に指すシムリンクを作成する必要があります。

グローバルにインストールされた npm パッケージのバイナリを使用したいとき:

npm を使ってグローバルにインストールしたパッケージのコマンド(例: eslint, jest など)も、適切なバージョンの Node.js に紐付けるためにシムリンクが必要。

Discussion