えんぴつぶろぐ

子育て中のフロントエンドエンジニアのブログ。

HomebrewでmacOSにnodenvを導入する(2018年版)

はじめに

自宅のPCでNode.jsをいじるのが久しぶりすぎて、まずはnodenvを使って最新のNode.jsをいれようとしました。
公式のガイド通りにやればサクッと導入できると思ってましたが、意外と手順が多かったので、備忘録としてまとめておきます。

環境

Homebrewのアップデート

まずは公式の手順に従ってHomebrewをアップデートします。

$brew update
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
Error: /usr/local is not writable. You should change the
ownership and permissions of /usr/local back to your
user account:
  sudo chown -R $(whoami) /usr/local

いくつかエラーが出力されました。
まずは Error: /usr/local is not writable. というエラーを解消するため、メッセージにしたがって以下のコマンドを打ちます。

$sudo chown -R $(whoami) /usr/local
Password:

再度updateしてみます。

$brew update
...
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
Error: Failure while executing; `git config --local --replace-all homebrew.analyticsmessage true` exited with 1.

やはりCommandLineToolsがないと怒られたので念の為インストールします。

$xcode-select --install
xcode-select: note: install requested for command line developer tools

再度updateをかけるとAlready up-to-date.となり成功していました。

$brew update
Already up-to-date.

nodenvのインストール

まずは、すでにシステムに入っているNode.jsのバージョンを確認しておきます。
※Node.jsをインストールしてない人はこの手順は不要

$node -v
v6.6.0

Homebrew経由でnodenvをインストールします。

$brew install nodenv

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

$nodenv -v
nodenv 1.1.2 # ok

nodenvの初期化

nodenv init を打つと以下のようなメッセージが表示されます。

$ nodenv init
# Load nodenv automatically by appending
# the following to ~/.bash_profile:

eval "$(nodenv init -)"

このメッセージは ~/.bash_profileeval "$(nodenv init -)"を追加してね、という意味です。
(最初、改行で文章が終わっているのかと思って読んでたらよく意味がわかりませんでした…)

参考:

vimや任意のエディタ、echo コマンドなりで~/.bash_profileを修正します。

$ echo 'eval "$(nodenv init -)"' >> ~/.bash_profile # ~/.bash_profileにeval "$(nodenv init -)"を追加
$ source ~/.bash_profile # リロード

次はNode.jsのバージョン選択に進みます。

利用できるバージョンの一覧を確認

nodenvからインストールが可能なバージョンの一覧を確認します。

nodenv install -l

9.11.2までしか載っていなかった(この時点のNode.jsの最新バージョンは11)ので、次はUpgradingの手順に従ってnodenvをアップグレードします。

nodenvのアップグレード

$ brew update
$ brew upgrade nodenv node-build

再度バージョン一覧を確認すると、11.0.0まで掲載されていました。

$ nodenv install -l

Node.jsのバージョンを選択してインストール

念の為、最新版ではなく推奨版であるNode.jsの10.13.0をグローバルにインストールします。

$nodenv install 10.13.0
$nodenv global 10.13.0
$nodenv versions # nodenvに10.13.0が追加されたか確認
  system
* 10.13.0 (set by /Users/yoshie/.nodenv/version)

nodenvが正常に動作しているか確認

意図したバージョンになっているか確認します。

$node -v
v10.13.0 # 成功!

プロジェクトごとのバージョン設定

ここまでの手順ではグローバルへのインストールのみでしたが、プロジェクトフォルダ単位でもバージョンを固定しておくことをおすすめします。   そうしておけば、グローバルのNode.jsのバージョンアップをした際に既存のプロジェクトが影響を受けることがなくなります。

$cd ~/works/ # バージョンを固定したいプロジェクトのフォルダに移動
$nodenv local 10.13.0
$node -v # 確認
v10.13.0