MacのローカルNode.jsをnodebrewでバージョン切替できるよう移行する
はじめに
開発環境を構築する際にインストールした Node.js がローカルに存在していることはよくあることかと思います。
ローカルに存在していると Node.js のバージョンを複数持ち、開発要件によってバージョンを切り替えが必要な時困ってしまいます。
私も以前にインストールされた Node.js を使用していましたが、別バージョンが必要なことがありローカル環境から nodebrew へ移行を行いました。
つまずく点が多く複雑でしたので私が行った方法をこちらに記載していこうと思います。
実行環境
- macOS:Big Sur
- CPU:Intel
手順
- Node.js アンインストール
- Homebrew インストール
- nodebrew インストール
- nodebrew 上に node インストール
Node.js アンインストール
まずはローカル環境の Node.js をアンインストールします。
後で nodebrew 上でインストールするのでここは完全に削除して問題ありません。
ローカル Node.js の居場所確認
$ which node
# 出力
/user/local/bin/node
出力されたパスに対して削除コマンドを実行
$ sudo rm -rf /user/local/bin/node
さらに npm も削除
$ sudo rm -rf ~/.npm
以下コマンドでバージョンが表示されずエラーになれば node が削除完了です。
$ node -v
# 出力
bash: command not found: node
$ npm -v
# 出力
bash: command not found: npm
これでローカルに存在していた Node.js が削除されました。
Homebrew インストール
次に Homebrew をインストールします。
Homebrew は開発に使用するパッケージを管理してくれるソフトウェア
Node.js 、 Python、Git などを Homebrew 上にインストールしてバージョン管理等をします。
公式サイト
インストールコマンドは公式サイトにありますのでそちらを実行します。
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
少し時間がかかりますが、インストールが完了するまで待ちます。
以下コマンドを実行しバージョンが表示されればインストール完了です。
$ brew -v
# 出力
Homebrew 3.5.5
Homebrew/homebrew-core (git revision d4ed75d1c65; last commit 2022-07-18)
nodebrew インストール
先ほどインストールした Homebrew 上に nodebrew をインストールします。
$ brew install nodebrew
以下コマンドを実行しバージョンが以下のように表示されればインストール完了です。
$ nodebrew -v
# 出力
nodebrew 1.2.0
Usage:
nodebrew help Show this message
nodebrew install <version> Download and install <version> (from binary)
nodebrew compile <version> Download and install <version> (from source)
nodebrew install-binary <version> Alias of `install` (For backward compatibility)
nodebrew uninstall <version> Uninstall <version>
nodebrew use <version> Use <version>
nodebrew list List installed versions
nodebrew ls Alias for `list`
nodebrew ls-remote List remote versions
nodebrew ls-all List remote and installed versions
nodebrew alias <key> <value> Set alias
nodebrew unalias <key> Remove alias
nodebrew clean <version> | all Remove source file
nodebrew selfupdate Update nodebrew
nodebrew migrate-package <version> Install global NPM packages contained in <version> to current version
nodebrew exec <version> -- <command> Execute <command> using specified <version>
nodebrew prune [--dry-run] Uninstall old versions, keeping the latest version for each major version
Example:
# install
nodebrew install v8.9.4
# use a specific version number
nodebrew use v8.9.4
nodebrew 上に node インストール
Node.js をインストールする前に nodebrew を使用するためのセットアップが必要です。
実は nodebrew インストール中にこのような出力がされています。
You need to manually run setup_dirs to create directories required by nodebrew:
/usr/local/opt/nodebrew/bin/nodebrew setup_dirs
Add path:
export PATH=$HOME/.nodebrew/current/bin:$PATH
To use Homebrew's directories rather than ~/.nodebrew add to your profile:
export NODEBREW_ROOT=/usr/local/var/nodebrew
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
zsh completions have been installed to:
/usr/local/share/zsh/site-functions
nodebrew を実行するために
-
setup_dirs
を実行する -
export PATH=$HOME/.nodebrew/current/bin:$PATH
という実行パスを追加
の設定が必要になります。
setup_dirs を実行する
以下のコマンドで実行できます。
$ /usr/local/opt/nodebrew/bin/nodebrew setup_dirs
実行パスを追加
こちらはターミナルが bash
か zsh
によってコマンドが違います。
使用しているターミナルがどちらか確認した上で対応するコマンドを実行してください。
- zsh の場合
$ vim ~/.zshrc
これで.zshrc の中身が表示されるので
i
を押し以下をコピぺした上でecs
を押して:wq
→Enter キーで.zshrc
を更新します。
export PATH=$HOME/.nodebrew/current/bin:$PATH
更新後、source を有効にします。
$ source ~/.zshrc
- bash の場合
.bash_profile
にパスを保存します。
zsh と同様の手順で変更先のファイルを.bash_profile
にすれば OK です。
最新の Node.js インストール方法
以下のコマンドで最新の Node.js をインストール
$ nodebrew install-binary latest
指定したバージョンの Node.js インストール方法
インストール可能な Node.js のバージョンを調べる
$ nodebrew ls-remote
出力されたバージョンの中から指定バージョンの Node.js をインストール
※ここではv16.15.1
をインストールします
$ nodebrew install v16.15.1
以下コマンドで nodebrew 上にインストールされている Node.js が確認できます
$ nodebrew list
# 出力
v16.15.1
v18.6.0
インストールした Node.js のバージョンを切り替える
バージョンを切り替えるには以下のコマンドを実行します。
ここでは v16.15.1
へ切り替えます。
$ nodebrew use v16.15.1
# 出力
use v16.15.1
v16.15.1 が有効になっているはずです。
以下のコマンドで有効なバージョンを確認します。
$ node -v
# 出力
v16.15.1
これでバージョンを切り替えることができました。
まとめ
開発に使用するパッケージやレガシーなアプリケーションの開発する際など使用する Node.js のバージョンは様々です。
バージョンを切り替えることはほぼ必須と言えますので、nodebrew でバージョン管理することを推奨します。
nodebrew へのインストールやローカル Node.js の削除が複雑でつまずいている方の参考になれれば嬉しいです。
参考サイト
Discussion
/user/local/bin/node
↓
/usr/local/bin/node
こうじゃないかな???