nvm for Windows 導入

Node.js のバージョン管理ツールにnvm for Windows を導入しました
その時の記録を書きます

## 環境
- OS: Windows 10
- Node.js, npmインストール済

## nvmとは
- Node Version Manager の略で、Node.js のバージョンを管理するためのツール
- Node.js の異なるバージョンを切り替えることができる
- [nvm公式によると](https://github.com/nvm-sh/nvm)はLinux環境に対応しており、WindowだとWSLなどLinuxの環境が必要らしい
>nvmはPOSIX準拠のシェル（sh、dash、ksh、zsh、bash）、特に以下のプラットフォームで動作します：UNIX、MacOS、Windows WSL。
- 今回は、Window対応版の [nvm for Windows](https://github.com/coreybutler/nvm-windows) を利用する

## Node.js 削除
- [Microsoftの記事](https://docs.microsoft.com/ja-jp/windows/dev-environment/javascript/nodejs-on-windows)によると、nvmをインストールする前にNode.jsまたはnpmを削除したほうがいいと記載がある。Node.jsを削除しなくてもnvmを導入できるが、[StackOverflow](https://stackoverflow.com/questions/20711240/how-to-completely-remove-node-js-from-windows)を参考に、念のため削除しておく。
>バージョン マネージャーをインストールする前に、ご利用のオペレーティング システムから Node.js または npm の既存のインストールを削除することをお勧めします。インストールの種類が異なると、奇妙で混乱を招く競合が発生する可能性があるためです。 これには、残っている可能性がある既存の nodejs インストール ディレクトリ (例: "C:\Program Files\nodejs") の削除などが含まれます。 NVM によって生成される symlink は、既存のインストール ディレクトリを (空であっても) 上書きしません。 以前のインストールの削除については、「How to completely remove node.js from Windows」 (Windows から node.js を完全に削除する方法) を参照してください。



- PowerShell or コマンドプロンプトを開き、npmのキャッシュを削除するコマンドを実行する
```
PS C:\> npm cache clean --force
npm WARN using --force I sure hope you know what you are doing.
```

- コントロールパネルの「プログラムと機能」を開き、 Node.js を右クリックして「アンインストール」をクリックする
![uninstall.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2667439/f338b813-10ef-0100-54bd-cd7d19f29df8.png)


- 下記のフォルダが存在する場合は削除する（私はC:\Users\{User}\AppData\Roaming\npm-cache があったため、削除した）
```
C:\Program Files (x86)\Nodejs
C:\Program Files\Nodejs
C:\Users\{User}\AppData\Roaming\npm (or %appdata%\npm)
C:\Users\{User}\AppData\Roaming\npm-cache (or %appdata%\npm-cache)
C:\Users\{User}\.npmrc (and possibly check for that without the . prefix too)
C:\Users\{User}\AppData\Local\Temp\npm-*
```

- システム環境変数の編集を開き、環境変数PATHを確認し、Node.js または npm への参照が存在しないことを確認する（私はなかった）
![check-path.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2667439/9d5bca30-18a3-b02c-b04c-6d6a29f94235.png)

- PowerShell or コマンドプロンプトを開き、Node.jsが削除されているか確認するコマンドを実行する（私はなかった）
    - where nodeと入力すると、それが存在する場所が表示される。その場所も削除する
```
PS C:\> where node
PS C:\>
```

## nvm for Windowsインストール
- 以下のサイトにアクセスして、nvm-setup.exe をダウンロードする
    - https://github.com/coreybutler/nvm-windows/releases
![nvm-setup.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2667439/676f4a14-d719-50e8-fe24-a250d1d1761e.png)
- インストーラを実行する
    - インストール ウィザードの指示に従って、セットアップする
    - たとえば、nvm-windows と Node.js をインストールするディレクトリの選択などがある
![installer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2667439/d55050dc-7ce7-05d6-cb52-759d10361fce.png)
- インストールが完了するまで待つ
- インストールが完了したら、バージョンを確認する
```
PS C:\> nvm version
1.1.9
```

## Node.js インストール
- PowerShell or コマンドプロンプトを管理者権限で開く
- インストールされているNode.jsのバージョン一覧を確認する（この時点では何も出てこない）
```
PS C:\> nvm list

No installations recognized.
```
- nvm list available コマンドを実行すると、LTS の現在のバージョン番号を調べることができる
```
PS C:\> nvm list available

|   CURRENT    |     LTS      |  OLD STABLE  | OLD UNSTABLE |
|--------------|--------------|--------------|--------------|
|    18.7.0    |   16.16.0    |   0.12.18    |   0.11.16    |
|    18.6.0    |   16.15.1    |   0.12.17    |   0.11.15    |
|    18.5.0    |   16.15.0    |   0.12.16    |   0.11.14    |
|    18.4.0    |   16.14.2    |   0.12.15    |   0.11.13    |
|    18.3.0    |   16.14.1    |   0.12.14    |   0.11.12    |
|    18.2.0    |   16.14.0    |   0.12.13    |   0.11.11    |
|    18.1.0    |   16.13.2    |   0.12.12    |   0.11.10    |
|    18.0.0    |   16.13.1    |   0.12.11    |    0.11.9    |
|    17.9.1    |   16.13.0    |   0.12.10    |    0.11.8    |
|    17.9.0    |   14.20.0    |    0.12.9    |    0.11.7    |
|    17.8.0    |   14.19.3    |    0.12.8    |    0.11.6    |
|    17.7.2    |   14.19.2    |    0.12.7    |    0.11.5    |
|    17.7.1    |   14.19.1    |    0.12.6    |    0.11.4    |
|    17.7.0    |   14.19.0    |    0.12.5    |    0.11.3    |
|    17.6.0    |   14.18.3    |    0.12.4    |    0.11.2    |
|    17.5.0    |   14.18.2    |    0.12.3    |    0.11.1    |
|    17.4.0    |   14.18.1    |    0.12.2    |    0.11.0    |
|    17.3.1    |   14.18.0    |    0.12.1    |    0.9.12    |
|    17.3.0    |   14.17.6    |    0.12.0    |    0.9.11    |
|    17.2.0    |   14.17.5    |   0.10.48    |    0.9.10    |

This is a partial list. For a complete list, visit https://nodejs.org/en/download/releases
```

- 今回はNode.js の最新の安定した LTS リリースをインストールする
```
PS C:\> nvm install 16.16.0
Downloading node.js version 16.16.0 (64-bit)...
Extracting...
Complete


Installation complete. If you want to use this version, type

nvm use 16.16.0
```
- インストールされているNode.jsのバージョン一覧を確認する（インストールしたバージョンが表示される）
```
PS C:\> nvm list

    16.16.0
```

## Node.js バージョン切り替え
- nvm use <バージョン> コマンドで、指定されたバージョンを使用するように切り替えることができる
```
PS C:\> nvm use 16.16.0
Now using node v16.16.0 (64-bit)
```
- node -v または node --version コマンドで、Node.js のバージョンを確認する
```
PS C:\> node -v
v16.16.0
PS C:\> node --version
v16.16.0
```