MacにHomebrew経由でnodenvを導入する（＋PHPStorm対策）

　以前`ndenv`を使っていたのですが、気づいたら`deprecated`になっていたので転職時に新しい端末になったのを機に`nodenv`へ移行しました。`anyenv`使って入れるのがステップ数多くてだるいなと思っていたのですが、`homebrew`であれば割とサクッと入れられそうだったので今回はこちらで導入してみるので、備忘録として残しておきます。

https://github.com/nodenv/nodenv

# Homebrewの導入

導入済み前提で進めるので、導入方法については割愛します。

# 既存のNode.jsまたはNode.jsバージョン管理の削除

各々の環境で異なっている所だと思うので適時環境にあった方法にて対応ください。Macなら大体当該ディレクトリを消せば済むと思います。

# nodenvのインストール

```terminal
brew install nodenv
```

まぁまぁ時間がかかると思うので、のんびり待ちます。

# 初期化コマンドをシェルプロファイルに追記

`eval "$(nodenv init -)"`を追記します。最近のMacならzshがデフォルトだと思うので`~/.zshrc`でしょうか。

`nodenv init`を打つとどのファイルに追記すればよいのかを教えてくれるようです。

```terminal
% nodenv init
# Load nodenv automatically by appending
# the following to ~/.zshrc:

eval "$(nodenv init -)"
```

追記したらターミナルを再起動します。

# インストール確認

`nodenv`には`nodenv-doctor`という診断ツールが用意されています。以下のコマンドを叩くと`nodenv`が正常にインストールされているかと、利用状況が出力されます。

```terminal
% curl -fsSL https://github.com/nodenv/nodenv-installer/raw/master/bin/nodenv-doctor | bash
Checking for `nodenv' in PATH: /usr/local/bin/nodenv
Checking for nodenv shims in PATH: OK
Checking `nodenv install' support: /usr/local/bin/nodenv-install (node-build 4.8.0)
Counting installed Node versions: none
  There aren't any Node versions installed under `/Users/ユーザ/.nodenv/versions'.
  You can install Node versions like so: nodenv install 2.2.4
Auditing installed plugins: OK
```

いたれりつくせりですね。

# `nodenv`の利用方法

ターミナルに`nodenv`打てば全部丁寧に教えてはくれるのですが、代表的なのを抜粋しておきます。

## 利用出来るNode.jsのバージョン一覧

```terminal
nodenv install -l
```

## 指定したバージョンのNode.jsをインストール

```terminal
nodenv install {{ バージョン }}
```

## インストール済みのNode.js一覧

```terminal
nodenv versions
```

よくlistって打って怒られてます…

## 現在のNode.jsバージョン

```terminal
nodenv version
```

`node -v`でもいいんですが、こちらで表示するとNode.jsのバージョン選定理由が併記されます。

```terminal
12.16.0 (set by /Users/ユーザ/.nodenv/version)
```

## グローバルで使用するNode.jsのバージョンを指定

```terminal
nodenv global {{ バージョン }}
```

## プロジェクトで使用するNode.jsのバージョンを指定

```terminal
nodenv local {{ バージョン }}
```

ターミナルでの現在位置に`.node-version`というファイルが作られます。このファイルがあると、当該ディレクトリでNode.js実行時に自動的に指定バージョンのものを使おうとし、指定バージョンが導入されてなければ当該バージョンをインストールするようにエラーが出ます。

```terminal:該当バージョンが見つからない場合
nodenv: version `12.16.0' is not installed (set by /Users/ユーザ/プロジェクト/.node-version)
```

# PHPStormなどのJetBrains製IDE利用時に`npm`がないと怒られる場合

PHPStormなどのJetBrains製IDEを使っていると、過去に`ndenv`を利用していた時にも[同じことを書いています](https://qiita.com/alice37th/items/fe720d9ac2b94ad9395a)が、この状態でプロジェクトを開いてNPMスクリプトを実行しようとした際にパッケージマネージャが見つからないと怒られると思います。

<img width="630" alt="スクリーンショット 2020-03-24 11.15.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141352/3373920e-9dec-7937-e0bd-68bf80d57902.png">

非常にだるいのでなんとかします。

## `jetbrains-npm`をインストール

https://github.com/nodenv/jetbrains-npm

`nodenv`のインストール先によって導入方法が異なるようですが、今回はデフォルトパスにインストールしているので推奨されている方法で導入します。

```terminal
mkdir -p "$(nodenv root)/lib/node_modules"
git clone https://github.com/nodenv/jetbrains-npm "$(nodenv root)"/lib/node_modules/npm
```

導入が終わるとPHPStormがNPMを見つけてくれるようになり、NPMタブも無事叩き放題になります。

<img width="758" alt="スクリーンショット 2020-03-24 11.28.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141352/bd9f7161-df2b-1a68-bbf1-7ea8315e0346.png">

昔と比べると導入するのも楽になった気がします。多大な労力を割くような場所ではないと思うので、楽になるに越したことはないですね。