nodebrewのセットアップ&操作方法(Mac)

## 「nodebrew」とは？

Node.jsのバージョンを管理するツールです。
rbenvやpyenvのNode.js版と考えるとわかりやすいです。

## 環境

- OS：macOS Mojave 10.14.6
- nodebrew：1.0.1

## セットアップ

### nodebrewのインストール

Homebrewからインストールします。

```shell-session
$ brew install nodebrew
```

### nodebrewの初期設定

`nodebrew setup` を実行するのみです。

```shell-session
$ nodebrew setup
Fetching nodebrew...
Installed nodebrew in $HOME/.nodebrew

========================================
Export a path to nodebrew:

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

出力内容に従って `~/.bash_profile` に以下を追記し、パスを通します。

```diff_shell:.bash_profile
+ export NODEBREW_DIR="${HOME}/.nodebrew"
+ if [ -d "${NODEBREW_DIR}" ]; then
+   export PATH=$NODEBREW_DIR/current/bin:$PATH
+ fi
```

`PATH` を `$PATH:$NODEBREW_DIR/current/bin` のように書くと、MacにプリインストールされているNode.jsが優先されることがあるようです。

`~/.bash_profile` をリフレッシュします。

```shell-session
$ source ~/.bash_profile
```

## 操作方法

### Node.jsのインストール

以下のコマンドを実行し、任意のバージョンのNode.jsをインストールします。

```shell-session
# インストールできるNode.jsのバージョンを確認する
$ nodebrew ls-remote
v0.0.1    v0.0.2    v0.0.3    v0.0.4    v0.0.5    v0.0.6
…
v12.0.0   v12.1.0   v12.2.0   v12.3.0   v12.3.1   v12.4.0   v12.5.0   v12.6.0
v12.7.0   v12.8.0   v12.8.1   v12.9.0   v12.9.1   v12.10.0  v12.11.0  v12.11.1
v12.12.0  v12.13.0  v12.13.1  v12.14.0  

v13.0.0   v13.0.1   v13.1.0   v13.2.0   v13.3.0   v13.4.0   v13.5.0
…

# 最新版をインストールする
$ nodebrew install-binary v13.5.0
```

`nodebrew setup` を実行していないと、以下のエラーが発生します。

```shell-session
$ nodebrew install-binary latest
Fetching: https://nodejs.org/dist/v11.12.0/node-v11.12.0-darwin-x64.tar.gz
Warning: Failed to create the file
Warning: /Users/{ユーザー名}/.nodebrew/src/v11.12.0/node-v11.12.0-darwin-x64.tar
Warning: .gz: No such file or directory
0.0%
curl: (23) Failed writing body (0 != 1057)
download failed: https://nodejs.org/dist/v11.12.0/node-v11.12.0-darwin-x64.tar.gz
```

### Node.jsのバージョン切替

`nodebrew use` コマンドでNode.jsのバージョンを設定します。

```shell-session
$ nodebrew use v13.5.0
```

### Node.jsのバージョン確認

`nodebrew list` コマンドでインストールされているNode.jsの全バージョンを確認できます。
「current」が設定しているバージョンです。

```
$ nodebrew list
v13.5.0

current: v13.5.0
```

実際のNode.jsのバージョンも確認します。
currentとバージョンが異なる場合、nodebrewでインストールしているNode.jsが使われていない可能性があります。

```
$ node -v
v13.5.0
```

### Node.jsのアンインストール

`nodebrew uninstall` コマンドでNode.jsをアンインストールします。

```shell-session
$ nodebrew list
v16.15.0
v16.15.1

current: v16.15.1

$ nodebrew uninstall v16.15.0
v16.15.0 uninstalled

$ nodebrew list
v16.15.1

current: v16.15.1
```

## コラム：LTSとCurrent

Node.jsにはLTS(Long-term support)とCurrentがあります。
基本的に奇数バージョン(v11, 13など)はLTSにならないため、業務では偶数バージョン(v10, 12など)を使うことが多いと思います。

https://nodejs.org/en/about/previous-releases

2019/12/19現在、LTSの最新バージョンが12.14.0、Currentの最新バージョンが13.5.0です。

https://nodejs.org/en

nodebrewでは `stable` でLTSの最新バージョン、 `latest` でCurrentの最新バージョンを指定できます。
つまり、業務でバージョンの細かい指定が不要なら `nodebrew install-binary stable` でインストールすればOKです。

## 参考リンク

- [hokaccha/nodebrew: Node.js version manager](https://github.com/hokaccha/nodebrew)
- [買いたてのＭacにNode.jsとnpmをインストール - Qiita](https://qiita.com/taketakekaho/items/dd08cf01b4fe86b2e218)
- [node.jsのversionを管理するためにnodebrewを利用する - Qiita](https://qiita.com/sinmetal/items/154e81823f386279b33c)
- [node.jsの管理をhomebrewからnodebrewに変えて、npmをインストール - Qiita](https://qiita.com/somtd/items/bd413e89d2db22ab795e)