↗️
nodenvでnodeのバージョンアップをする
現在利用している 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