メモ。
これまでは Homebrew でインストールした Node を使っていたが、バージョンを上げたくて複数バージョン管理できるツールを取り入れることにした。
Node のバージョン管理ツールはちょっと調べた限り
あたりがあったが、元々 Python のバージョン管理に pyenv を使っていた過去もあり同じような使い勝手の ndenv にした。
またこの機会に anyenv もインストールし、ndenv は anyenv 経由でインストールすることにした。
n も一瞬触ってみたが、「プロジェクトごとに Node のバージョンを固定してバージョンを自動的に切り替える」をやる方法がわからず ndenv に乗り換えた。
インストール手順
こちらの記事が詳しい。
anyenv と ndenv のインストール
$ git clone https://github.com/riywo/anyenv ~/.anyenv
で anyenv をインストールした後、 .zshrc
に
export PATH="$HOME/.anyenv/bin:$PATH" eval "$(anyenv init -)"
を追記しておく。今回のみシェルを再起動するため
$ exec $SHELL -l
を実行する。
最後に ndenv をインストールする。
$ anyenv install ndenv $ exec $SHELL -l
ndenv で特定バージョンの Node をインストール
$ ndenv install -l Available versions: v0.1.14 v0.1.15 v0.1.16 ...
でインストールしたいバージョンを探し
$ ndenv install v8.9.3
のようにバージョンを指定してインストールする。
$ ndenv global v8.9.3 $ ndenv rehash $ ndenv versions system * v8.9.3 (set by /Users/yamazaki/.anyenv/envs/ndenv/version)
トラブルシューティング
$ ndenv versions system * v8.9.3 (set by /Users/yamazaki/.anyenv/envs/ndenv/version) $ node -v v6.9.4
切り替わってない...?
(v6.9.4 は以前 Homebrew 経由でインストールしたバージョン)
$ which node /usr/local/bin/node
Homebrew でインストールした Node が優先されているようだ。
似たような問題に遭遇している人がいた。
Homebrew をアップデートしたら ndenv の node が使えなくなった | WEBMAN
回避策として、記事に記載されている通り、Homebrew の Node をアンインストールした。
$ brew uninstall --ignore-dependencies node $ exec $SHELL -l $ which node /Users/yamazaki/.anyenv/envs/ndenv/shims/node $ ndenv versions * v8.9.3 (set by /Users/yamazaki/.anyenv/envs/ndenv/version)
which node
のパスが変わっているので無事にアンインストールできたっぽい。
また ndenv versions
したときに system
が表示されなくなった。
npm にまだ問題があった
$ which npm /usr/local/bin/npm
npm コマンドが残っていた...
- homebrewでインストールしたnode.jsをアンインストールする | ひびテク
- javascript - How do I completely uninstall Node.js, and reinstall from beginning (Mac OS X) - Stack Overflow
あたりを参考に
$ npm uninstall -g npm $ rm -rf /usr/local/lib/node_modules $ brew prune
を実行してきれいになった。本来は Node より先に npm をアンインストールすべきだったらしい。
$ which npm /Users/yamazaki/.anyenv/envs/ndenv/shims/npm
npm のパスが変わったのでこれでおそらく大丈夫。
# v6.9.4 は ndenv install 済みとして $ ndenv local v6.9.4 $ node -v v6.9.5 $ npm -v 3.10.10 $ ndenv local v8.9.3 v8.9.3 $ npm -v 5.5.1