はじめに
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をインストールします。
2024年8月現在、おさがりのMacbook Air M1に乗り換えたからか、anyenvからnodenvをインストールできなくなっていました。
代わりにHomebrewでnodenvをインストールします。
# Homebrewがインストールされている状態で以下を実行
brew install nodenv
nodenv -v
# バージョンが出力されればインストール成功
nodeをインストール
インストール可能なバージョンの一覧を取得します。
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
上記のようなにパスが返らなければ、指定したバージョンへのパスが通っていません。
その場合はターミナルをcommand + Q
で一旦終了させてから再起動し、再びnodenv global バージョン
を実行してwhich 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.0 | node v19.1.0をインストール |
nodenv global 19.1.0 | node v19.1.0をグローバルに設定 |
nodenv local 19.1.0 | node v19.1.0を任意のディレクトリに設定 ※前もってディレクトリを移動していること |
最後に
以上がbrewenvからnodenvへの乗り換えと、個別にnodeバージョンを設定する方法でした。
みなさん無事にnodenvへ乗り換えできましたか?
環境によってはそもそもnodeの向き先(読み込み元)が別の場所だったりする可能性もあるので、全員が一律で成功するわけではありません。
この記事でダメだったら、元の状態に戻して別記事を探しましょう。(丸投げ)
コメント