HomebrewでmacOSにnodenvを導入する(2018年版)
はじめに
自宅のPCでNode.jsをいじるのが久しぶりすぎて、まずはnodenvを使って最新のNode.jsをいれようとしました。
公式のガイド通りにやればサクッと導入できると思ってましたが、意外と手順が多かったので、備忘録としてまとめておきます。
- はじめに
- 環境
- Homebrewのアップデート
- nodenvのインストール
- nodenvの初期化
- 利用できるバージョンの一覧を確認
- nodenvのアップグレード
- Node.jsのバージョンを選択してインストール
- nodenvが正常に動作しているか確認
- プロジェクトごとのバージョン設定
環境
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_profile
にeval "$(nodenv init -)"
を追加してね、という意味です。
(最初、改行で文章が終わっているのかと思って読んでたらよく意味がわかりませんでした…)
参考:
- `nodenv init` won't add shims to `$PATH` · Issue #84 · nodenv/nodenv · GitHub
- FAQ · nodenv/nodenv Wiki · GitHub
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