Edited at

nodebrewからnodenvに乗り換えた


概要

ずっと使っていたnodebrewをやめて、ディレクトリごとにnodeのバージョンを切り替えられるnodenvに乗り換えました。

nodenv/nodenv


きっかけ

firebaseを使った開発をしてて、フロント側とclound functionsで対応するnodeのバージョンが違う事案が発生しました。

nodebrewだとディレクトリでバージョンを切り替えられなかったので、探した末nodenvにたどり着きました。


導入手順


nodebrewを削除

まずはnodebrewを削除します。

$ brew uninstall nodebrew

あとは ~/.bash_profile に書いてあるPATHを消します。(使用してるSHELLによってPATHの在り処は変わります)

$ vi ~/.bash_profile

# .bash_profile
PATH="~~" # nodebrewのPATH。ここを消す

nodeが消されたか確認します。

$ node -v

# バージョン情報が返ってこなければOK


nodenvをインストール

いろんな envライブラリを管理してる anyenvをインストールして、そこからnodenvをインストールしてきます。

anyenv/anyenv

$ brew install anyenv

$ anyenv init
$ anyenv install nodenv
$ exec $SHELL -l

nodenvがインストールされたか確認します。

$ nodenv -v

nodenv 1.3.0+5.ae0f24a #こんな感じのが返ってきたらOK


nodeをインストール

まずはインストール可能なバージョンの確認を。

$ nodenv install -l 

Available versions:
0.1.14
0.1.15
0.1.16
# 以下略

必要なnodeのバージョンをインストールします。

$ nodenv install 12.7.0

$ nodenv install 10.16.0

グローバル(通常使用する方)を設定。

$ nodenv global 12.7.0

$ node -v
v12.7.0

10系のほうは必要なディレクトリに移動して、以下のように設定します。

$ nodenv local 10.16.0

$ node -v
v10.16.0

あと、自分はyarnを使うのでそれも。

$ npm install -g yarn

インストールした諸々を反映させて

$ exec $SHELL -l

完了!

これでディレクトリごとにnodeバージョンの管理ができるようになりました。

うまく行かなかったらローカルにPATHの消し忘れはないか、反映し忘れはないかなど確認してみましょう。

あとは適宜本家Githubを見てみてくださいませ。

anyenv/anyenv

nodenv/nodenv