💻

インストールしている Node.js のバージョンをダウングレードさせるために n を使ってみる

2020/10/25に公開

logo-light.svg

この記事について

本記事は、Node.js のバージョン管理が可能になる npm パッケージ n のインストールおよび n を利用した Node.js のバージョン変更方法について記載しています。
なお、npm パッケージ n は Windows ネイティブでは未サポート のため、対象となるのは Linux や macOS など、非 Windows 環境となります。

対象読者

  • Node.js を既にインストールしている方
  • Node.js を過去のバージョンにダウングレードしたい方
  • OS が Linux や macOS の方

環境

  • OS: macOS Catalina Version 10.15.2
  • Node.js: v12.16.1

はじめに

普段、自分の開発 PC の Node.js は常に最新の LTS バージョンがインストールされているようにしています。(2020/03/06 時点では v12.16.1 でした)
ただ最近、そのことが原因で困った事が起こりました。

SharePoint Framework 用の NodeJS の現在サポートされている LTS バージョンは、Node.js v8.x および Node.js v10.x の両方です。

なんだと・・・という気がした (Microsoft さん早めのアップデートをお願いします...) のですが、ふと思い返すと、pyenv や goenv、exenv など他の言語だとバージョン管理パッケージを入れている のに、Node.js には入れていなかったということに気がつきました。

そこで、npm trends を参照し、一番利用されている Node.js のバージョン管理パッケージ n を使って Node.jsのバージョンをダウングレードしてみることにしました。
※「Docker 使えばいいじゃん」という意見もあると思います。率直に言うと私も同意見なのですが、今回は諸事情により無視でお願いします。

インストール

npm リポジトリより、npm パッケージ n をグローバルインストールします。

sudo npm install -g n

Node.js バージョン変更

インストールが完了したら、実際に Node.js のバージョンを変更していきます。

グローバルインストール済みのパッケージ確認

npm パッケージ n の注意点として、以下の記載があります。

The global packages are not changed by the install, with the exception of itself which is part of the install.
(グローバル・パッケージは、インストールの一部であるそれ自体を除いて、インストールによって変更されません。)

つまり、n によってバージョン変更を行うと、グローバルインストールされた npm パッケージに対して、以下の変更がかかるということになります。

  • Node.js のバージョンは変更される
  • npm のバージョンも変更した Node.js のバージョンによっては変更される
  • Node.js および npm 以外については、一切バージョンは変わらない(影響を受けない)

そのため、実際に Node.js のバージョンを変更する前には、自分の環境に何がグローバルインストールされているのか確認した上で、変更による影響について考慮しておくことをお勧めします。

グローバルインストール済みパッケージの確認
npm list -g
実行結果
/usr/local/lib
├── n@6.3.1
├─┬ npm@6.13.4
...
└── yarn@1.22.0

私の場合だと、n と npm の他に、yarn がグローバルインストールされています。
※ご存知の方も多いと思いますが、yarn は npm と同じパッケージマネージャーなので今回は無視します。

ダウングレード

ダウングレード可能なバージョン情報を確認します。

切り替え可能なバージョン一覧の確認
n ls-remote --all
実行結果
13.10.1
13.10.0
13.9.0
...
11.0.0
10.19.0
10.18.
...
0.8.6

今回は、v10.x の最終版である v10.19.0 にダウングレードします。

ダウングレード
sudo n 10.19.0
実行結果
  installing : node-v10.19.0
       mkdir : /usr/local/n/versions/node/10.19.0
       fetch : https://nodejs.org/dist/v10.19.0/node-v10.19.0-darwin-x64.tar.xz
   installed : v10.19.0 (with npm 6.13.4)

実行後、Node.js のバージョンを確認すると、v10.19.0 に切り替わっているはずです。

バージョン確認
node -v
実行結果
v10.19.0

バージョン最新化

最新の LTS バージョンに Node.js のバージョンを戻す場合は、以下のコマンドを実行します。

sudo n lts

関連リンク

参考情報

公式情報

Node.js

n

Qiita

その他

Discussion