DOTLOG

nodebrewからndenvにして、ディレクトリ/プロジェクト毎にnodeのバージョンを指定する方法

どうもタニです。

今回は、ndenvのインストールから使い方までを紹介していきます。

nodebrewってNodeのバージョンの切り替えは出来るけど、ディレクトリごとにバージョンを自動で切り替えたりが出来ないんですよね。
そういう便利なものが無いかなぁと思い探してみたところ、ndenvというものを見つけました。

nodebrewって何?って方は、こちらに解説してありますので読んでみてください!

nodebrewの削除

.bashrc(.zshrc、.bash_profileなど)の以下記述を削除する。

export PATH=$HOME/.nodebrew/current/bin:$PATH

そして、Homebrew管理下のnodebrewを削除する。

brew uninstall nodebrew

これでOKです。

2018/1/19追記
~/.nodebrew/ディレクトリは不要であれば消してください。もしかしたらまたnodebrew使うとか、今まで使ってたバージョンを確認したいなどの場合は残しておいていいと思います。

インストール方法

ndenvのインストール

Homebrewを使ってインストールします。

brew install ndenv
echo 'export PATH="$HOME/.ndenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(ndenv init -)"' >> ~/.bashrc

or

vim ~/.bashrc

# vimやviで以下を直接追加してもOK
export PATH="$HOME/.ndenv/bin:$PATH"
eval "$(ndenv init -)"

追加したら、次にシェルを再起動します。

exec $SHELL -l

これでndenvコマンドが使えるようになりました。
ただしこのままだとndenv installコマンドがつかえないので、node-buildというものも導入する必要があります。

node-buildを導入

こちらを参考にしてもらえれば特に問題ないのですが、下記コマンドを実行するだけでOKです。

git clone https://github.com/riywo/node-build.git $(ndenv root)/plugins/node-build

これだけです。
これでndenv installがつかえるようになりました!

使い方

# インストール可能なバージョンリスト
ndenv install -l

# 使用したいバージョンをインストールする
ndenv install [version]

# グローバルで(どのディレクトリでも)使えるようにする
ndenv global [version]
ndenv rehash

# ローカル(ディレクトリ毎)で指定したバージョンを使えるようにしたい
ndenv local [version]

使い方はこんな感じです。nodebrewはndenv globalまでしかできないイメージですね。

ndenv localを実行することで、実行したディレクトリに.node-versionというファイルが作られ、そこでバージョン管理を行っています。

間違えて消したり、内容を書き換えたりはしないようにしましょう!

ちなみにndenv globalして切り替えたのにnode -vでバージョンが切り替わらないときは、一度ターミナルを閉じると直るかも!自分はそれでなおりました!

2018/1/19追記
ターミナルを閉じてもなおらない場合は、別にnodeがインストール可能性が高いです。
まず、今nodeがどこで実行されているのか確認しましょう。

which node

下記のように出てきた場合、brewでインストール可能性が高いです。
brew管理のnodeは削除しましょう。

/usr/local/bin/node

# 上記が出てきたらbrewでインストールされてるか確認
brew list node

# 上記実行してインストールされてたら消す
brew uninstall node

# 上記で消えない場合は下記を実行
brew uninstall --ignore-dependencies node

これで問題なく実行出来るようになってるはずです。node -vして切り替わってるか確認して見てください!

さいごに

rbenvなどを使ってないと慣れるまで時間はかかるかもしれないのですが、時間が経てば経つほど新しいバージョンが出てきます。

また、仕事で使っていると、どうしても古いプロジェクトの修正をしないといけないときに、「あれ?バージョンいくつだっけ?」とかを迷わなくて済みます。

便利なのでぜひ使ってみてはいかがでしょうか!

COMMENTS

TOP