Node.jsのバージョン管理:NVM for Windows (nvm-windows)

2021-01-06

少し前にうっかりNode.js のバージョンをLTS(推奨版)でなく最新版にしたら、ビルドができなくなってしまいました。なので、バージョンを落とそうと思うのですが、Node.js のバージョンを切り替え可能にするためのNVM for Windows (nvm-windows) というものをインストールしてみます。

Gatsbyのプロジェクトがビルド不能に

1. nvm-windows インストール前の準備

やり方はこちらにありますが、最初にNode.js と npm をアンインストールします。

1-1. Node.js をアンインストールする

  • 通常のWindowsのアンインストールの方法でおこないます。
プログラムの追加と削除
Node.js のアンインストール

1-2. npm の設定をバックアップする

  • 念の為、以下をバックアップしました。
    • C:\Users\<ユーザー>\AppData\Roaming\npm\

1-3. npm のインストールフォルダを削除する

  • 以下のフォルダを削除しました。
    • C:\Users\<ユーザー>\AppData\Roaming\npm\
    • C:\Users\<ユーザー>\AppData\Roaming\npm-cashe\

1-4. プロジェクトのバックアップ

  • 更に念の為に、あるフォルダ以下にある現在のプロジェクト(ソースコード等)を node_modules フォルダ等を除いて、別のディスクにコピーしました。
  • 今回用いた方法は以下のとおりです。
  • 下記内容の excludes.txt を作成する。
node_modules
build
  • 次のコマンドをコマンドプロンプトで実行する(パスなどは適当に書き換えてください)。
> xcopy dev d:\dev /i /s /e /exclude:excludes.txt

2. nwm-windows のインストール

  • こちらから最新のnvm-setup.zip をダウンロードしてインストールする(ダウンロードファイルをダブルクリックで開いて nvm-setup.exe を実行)。
  • インストール完了後にターミナルにて以下のコマンドを実行すると、nvmのバージョンと使い方が表示されます。
$ nvm

3. 各バージョンのNode.js 及び開発環境のインストール

3-1. 各バージョンのNode.js のインストール

  • この時点では Node.js はインストールされていません。以下のコマンドで確認できます。
$ nvm list

No installations recognized.
  • 例えば、次のコマンドで14.15.3 LTSをインストールできます。
$ nvm install 14.15.3
Downloading node.js version 14.15.3 (64-bit)…
Complete
Creating C:\Users\pitan\AppData\Roaming\nvm\temp

Downloading npm version 6.14.9… Complete
Installing npm v6.14.9…
 
Insntallation complete. If you want to use this version, type

nvm use 14.15.3
  • これでバージョン14.15.3がインストールされました。このバージョンを使うためには nvm use コマンドを使います。バージョン選択の結果は nmv list コマンドで確認できます。
$ nvm list

    14.15.3

$ nvm use 14.15.3
Now using node v14.15.3 (64-bit)
 
$ nvm list
  * 14.15.3 (Currently using 64-bit executable) 

$

3-2. グローバルユーティリティのインストール

  • 各バージョンのNode.jsにおけるグローバルユーティリティをインストールします。例えば次のようなコマンドによるものです。
$ npm install -g typescript
$ npm install -g yarn
$ npm install -g live-server
$ npm install -g gatsby-cli
  • 別のバージョンのNode.jsのためのグローバルユーティリティをインストールするためには、nvm use コマンドでバージョンを切り替えてから同じことをおこないます。