導入文
久しぶりに開発環境を見直してみたら、Node.js のバージョンが v14 のままだったことに気づきました。調べてみると Node.js 14 は 2023年4月にサポート終了(EOL)していて、セキュリティアップデートも来なくなっているとのこと。これはまずいなということで、重い腰を上げてアップデートすることにしました。
この記事は完全に自分用のメモなんですが、同じように nvm を使って Node.js をアップデートする人がいたら参考になるかもしれません。
作業環境と前提条件
項目内容OSmacOSバージョン管理nvm を採用前提ツールHomebrew が導入済み
アップデート手順
Step1:現状確認
まずは今どのバージョンを使っているのか確認しておきます。
bash
node -v
# v14.x.x
npm -v
# 6.x.x
やっぱり Node.js 14 系でした。そりゃそうだ。
Step2:nvm をインストール
今回は nvm(Node Version Manager)を使ってバージョン管理することにしました。nvm を入れておくと、複数のバージョンを切り替えたりできるので便利です。
bash
# Homebrew 経由でインストール
brew install nvm
# nvm 用のディレクトリを作成
mkdir ~/.nvm
インストールできたら、.zshrc に設定を追記します。これをやっておかないと nvm コマンドが使えないので忘れずに。
bash
# .zshrc に追記
export NVM_DIR="$HOME/.nvm"
[ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh"
[ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm"
で、設定を反映させます。
bash
source ~/.zshrc
Step3:Node.js 最新 LTS に切替
ここから本題です。nvm を使って最新の LTS(Long Term Support)バージョンをインストールします。LTS は長期サポート版なので、安定して使いたい人向けです。
bash
# 最新 LTS をインストール
nvm install --lts
# デフォルトバージョンとして設定
nvm alias default lts/*
# バージョン確認
node -v
# v20.x.x または v22.x.x(作業時の最新LTS)
npm -v
# 10.x.x
無事にアップデートできました。
Step4:.npmrc の衝突解消
アップデート後、こんな感じの警告が出ることがあります。
npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.
これは古い .npmrc の設定が残ってるせいですね。以下のコマンドで確認して、必要なら修正します。
bash
# 現在の npm の設定場所を確認
npm config get prefix
# グローバルパスを明示的に設定
npm config set prefix ~/.nvm/versions/node/$(node -v)
Step5:PATH の確認
ちゃんと正しいバージョンの Node.js が使われているか確認しておきます。
bash
which node
# /Users/username/.nvm/versions/node/v20.x.x/bin/node
which npm
# /Users/username/.nvm/versions/node/v20.x.x/bin/npm
.nvm/versions/node/ 配下を指していればOKです。
Before / After 比較
項目BeforeAfterNode.jsv14.x.x (EOL)v20.x.x (LTS)npmv6.x.xv10.x.xサポート状況サポート終了アクティブサポート中セキュリティ脆弱性リスクあり最新パッチ適用済み
よく使うグローバルパッケージの再インストール
nvm でバージョンを切り替えると、グローバルパッケージも入れ直す必要があります。自分がよく使うやつをまとめてインストールしておきました。
bash
npm install -g yarn vite gulp-cli firebase-tools
次回環境構築する時のために、ここにメモっておくと楽です。
トラブルシューティング
npm prefix エラーが出る場合
たまにこんなエラーが出ることがあります。
bash
# prefix を確認
npm config get prefix
# nvm 管理下のパスに設定し直す
npm config delete prefix
PATH の競合
システムにインストールされた Node.js と nvm の Node.js が喧嘩してる場合は、.zshrc の記述順序を見直してみてください。nvm の設定が最後に読み込まれるようにしておくといい感じです。
権限(sudo)問題
nvm を使ってる場合、基本的に sudo npm install -g は不要です。もし権限エラーが出たら、システム側の Node.js を参照しちゃってる可能性があります。
bash
# nvm 経由で実行されているか確認
which node
まとめ
というわけで、Node.js 14 から最新 LTS へのアップデートが無事完了しました。npm のインストール速度も速くなった気がするし、なんとなく動作も軽くなった感じがします(気のせいかもしれないけど)。
この記事は完全に未来の自分へ向けた備忘録です。また同じことやる時に「あれ、どうやったっけ?」ってならないように残しておきます。

コメントを残す