インストールしている Node.js のバージョンをダウングレードさせるために n を使ってみる
この記事について
本記事は、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
Discussion