nodeのバージョン管理をnodebrewからnodenvに切り替えた話

目次

はじめに

WordPressのブロック開発をするにあたりnpmパッケージをインストールしようとしたら、「nodeのバージョンがあってねぇぞ」と怒られたのが全ての始まりでした。

入れようとしたパッケージの対応したnodeはバージョン14〜17で、自分の環境にはバージョン19.xが入っていました。

さて、それなら現在のプロジェクト(ディレクトリ)にだけ別バージョンのnodeを入れようと思ったら、なんとこれまで使ってきたnodeのバージョン管理を任せていたnodebrewには、個別にバージョン管理をする機能がないことが判明。

これまでの記事でnodebrewを進めてきましたが、いろいろとパッケージを入れたい人にはnodebrewは不向きだということを、自分自身で経験してしまいました。

というわけで、nodebrewを入れている人は、ぜひ管理ツールの乗り換えを検討してもらえれば幸いです。

※nodebrewはグローバルのバージョンしか変更できないので、ある意味では初心者向けと言えます。

nodenvとは?

nodenvとはグローバルのバージョン管理しかできないnodebrewとは違い、プロジェクト(ディレクトリ)毎にバージョン管理ができる、謂わばnodebrewの上位交換のような管理ツールです。

なので環境の異なる複数プロジェクトを同時開発している人にとっては、個別にnodeバージョンを切り替えられるのは非常に助かるのではないでしょうか。

もちろん、nodebrewと同じくグローバルにも設定できますので、nodenvに乗り換えた後はnodebrewで設定していたnodeバージョンと同じバージョンをグローバルに設定すれば、ひとまずはこれまでと同じ環境で開発ができます。

nodebrewからnodenvへの乗換方法

手順自体は難しくありませんが、パスを通したり、場合によっては自身で書き換える必要があるので、編集箇所をコメントアウトして書き換えましょう。

それか別途バックアップを取っておけば、失敗した際にもすぐに復旧できます。

nodebrewをアンインストール

自分の場合はhomebrewを使ってインストールしていたので、同じくhomebrewを使ってアンインストールします。

brew uninstall nodebrew

# アンインストール後、バージョンを確認するとNo Such?とnodebrewが確認できなくなっているはずです。
nodebrew -v

もしアンインストールでエラーが出たら、おそらくhomebrew以外で入れているはずです。

覚えがあるならそれでググってください。

もしくは強制的に.nodebrewフォルダを別の場所へ移動するか、フォルダ名を.nodebrew.bakとリネームして、参照できないようにしてください。

改めてnodebrew -vを実行すると、nodebrewが見つかりませんと返るはずです。

さらに~/.bash_profileに書いてあるnodebrew用のPATHをコメントアウトしておきます。

Finderからは/user/ユーザー名/.bash_profileで、ターミナルならvi ~/.bash_profileでファイルを開けます。

.bash_profile内にnodebrewの文字列が含まれるPATHがあるはずですので、そこをコメントアウトして認識しないようにしましょう。

nodenvをインストール

今回は様々なenvライブラリを管理できるanyenvをhomebrewを使ってインストールし、さらにanyenvを使ってnodenvをインストールします。

# anyenvをインストール
brew install anyenv
anyenv init
# nodenvをインストール
anyenv install nodenv
# シェルの再起動
exec $SHELL -l
# nodenvがインストールされたか確認
# nodenv -v

nodeをインストール

まずはnodenvでインストール可能なバージョンの一覧を取得します。

nodenv install -l
0.1.14
0.1.15
0.1.16
0.1.17
0.1.18
0.1.19
# 以下略

# 必要なnodeのバージョンをインストール
nodenv install 17.9.0
nodenv install 18.9.1
nodenv install 19.1.0

# グローバルのバージョンを設定
nodenv global 18.9.1

# nodeのバージョンを確認
node -v
v17.9.0
# 指定のバージョンが表示されればOK

もし指定のバージョンに切り替わらなかった場合は、$ which nodeでnodeの向き先を確認してみてください。

which node
/Users/ユーザー名/.anyenv/envs/nodenv/shims/node

上記のようなパスでなければ、nodenvで指定したバージョンへのパスが通っていない証拠になります。

自分の場合はターミナルをcommand + Qで一旦終了させてから再起動し、再度必要なnodeのバージョンのインストールからやり直することで無事成功しました。

プロジェクト(ディレクトリ)へ指定のnodeバージョンを設定する

やり方は簡単で、変更したいプロジェクトへ移動し、globalではなくlocalを使うことで個別に設定できます。

# プロジェクトへ移動(WordPressのサンプルプラグインへ移動)
cd ~/docker/wp-dev/src/wp-content/plugins/sample-plugin
# localでバージョン設定
nodenv local 17.9.0
node -v
v17.9.0
exec $SHELL -l

以上でプロジェクト毎のバージョン変更が完了しました。

★以後、よく使うコマンド集

nodenvが成功したら、今後はしょっちゅうお世話になるはずですので、nodenvの操作でよく使うコマンドをまとめておきます。

コマンド解説
nodenv install -lインストール可能なバージョンの一覧を取得
nodenv install 19.1.0node v19.1.0をインストール
nodenv global 19.1.0node v19.1.0をグローバルに設定
nodenv local 19.1.0node v19.1.0を任意のディレクトリに設定
※前もってディレクトリを移動していること

最後に

以上がbrewenvからnodenvへの乗り換えと、個別にnodeバージョンを設定する方法でした。

みなさん無事にnodenvへ乗り換えできましたか?

環境によってはそもそもnodeの向き先(読み込み元)が別の場所だったりする可能性もあるので、全員が一律で成功するわけではありません。

この記事でダメだったら、元の状態に戻して別記事を探してみましょう。(丸投げ)

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次