Written by TSUYOSHI

nodenv を使って Node.js を簡単にバージョン管理する方法 【.node-versionファイルで簡単に切替】

JavaScript PROGRAMMING

複数プロジェクトを抱えてるフロントエンドの人
「プロジェクトごとにNodeのバージョンが違って、バージョンを切り替えるのが煩わしい。」
「Node.js のバージョン管理を簡単にしたい」

こういった悩みは結構ありますよね。
プロジェクトA(nodeバージョン8)、プロジェクトB(nodeバージョン10)の両方を担当していて、プロジェクトを切り替えて開発していたら、何かビルドが通らないと思ってたらNodeのバージョン切替を忘れてた…
こういった経験は結構あると思います。
「nodenv」を使えば、この問題を解決できるのでオススメです。

nodenvのメリットは以下の通りです。

  • nodenvでディレクトリ毎に簡単に切替ができる方法がわかるようになる。
  • Nodeバージョンの切替忘れが無くなる。

この記事を読むことによって、nodenvを使ってNodeバージョンの管理を簡単にできるようになるので、よかったら最後まで読んでください。

この記事を書いている僕はJavaScriptが得意分野でフロントエンドのプログラマー(フリーランス)として仕事をしています。
これまで企業などで3年以上のWeb制作経験があり、HTMLやCSSのマークアップからJavaScriptのフレームワークであるVue,React,Nuxtなどフロントエンドの開発を得意としています。

Nodeバージョンの切替の悩みを解決! ディレクトリごとに自動でNode.jsバージョンを切り替えてくれるnodenv

以前の僕は、「Nodebrew」を使って、Nodeのバージョン管理をしていました。
切替の際に「nodebrew use v10.0.0」のようにコマンド1つで簡単に切替ができてとても便利でした。しかし、複数のプロジェクトを掛け持ちしているときにNodeのバージョン切替を忘れたまま作業を進めてしまい、なぜおかしいんだろうとなって、しばらくしてからNodeのバージョン切り替え忘れに気づくということがしばしばありました。
こういった経験は皆さん結構あるのではないかと思います。

これを解決できるのが、「nodenv」です。管理するために「.node-version」ファイルを置かなければなりませんが、それだけなので非常にオススメします。

nodenvのインストール方法

インストール方法はnodenv公式のGitHubにも記載があります。

nodenvのインストール

1. 「~/.nodenv」にgit cloneします
$ git clone https://github.com/nodenv/nodenv.git ~/.nodenv

$ git clone https://github.com/nodenv/nodenv.git ~/.nodenv

Cloning into '/Users/xxx/.nodenv'...
remote: Enumerating objects: 14, done.
remote: Counting objects: 100% (14/14), done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 4017 (delta 2), reused 4 (delta 1), pack-reused 4003
Receiving objects: 100% (4017/4017), 731.96 KiB | 963.00 KiB/s, done.
Resolving deltas: 100% (2633/2633), done.

2.コンパイルします
$ cd ~/.nodenv && src/configure && make -C src

cd ~/.nodenv && src/configure && make -C src

gcc -fno-common -c -o realpath.o realpath.c
gcc -dynamiclib -dynamic -undefined dynamic_lookup -o ../libexec/nodenv-realpath.dylib realpath.o

3.パスを通します(以下はbashの場合です)
$ echo 'export PATH="$HOME/.nodenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(nodenv init -)"' >> ~/.bash_profile

$ echo 'export PATH="$HOME/.nodenv/bin:$PATH"' >> ~/.bash_profile

$ echo 'eval "$(nodenv init -)"' >> ~/.bash_profile

$ cat ~/.bash_profile

export PATH="$HOME/.nodenv/bin:$PATH"
eval "$(nodenv init -)"

4.設定を読み込ませるためにシェルを再起動します。(もしくはターミナルを閉じて、再度開く)
$ exec $SHELL -l

5.バージョン確認してnodenvが使えるようになっているかを確認します。
バージョンが表示されればOKです。
$ nodenv --version

$ nodenv --version

nodenv 1.4.0+3.631d0b6

※もし「-bash: nodenv: command not found」とか出る場合は失敗しているのでもう一度やり直すか、ターミナルを一度終了して起動し直すなどして見てください。

Node.jsのインストールができるようにプラグインもインストールする

「nodenv install」コマンドを使えるようにすれば簡単にNode.jsをインストールできるようになります。

1.「nodenv-update」プラグインをインストール (「nodenv update」を使えるようにする)
$ mkdir -p "$(nodenv root)"/plugins
$ git clone https://github.com/nodenv/nodenv-update.git "$(nodenv root)"/plugins/nodenv-update

$ mkdir -p "$(nodenv root)"/plugins
$ git clone https://github.com/nodenv/nodenv-update.git "$(nodenv root)"/plugins/nodenv-update

Cloning into '/Users/xxx/.nodenv/plugins/nodenv-update'...
remote: Enumerating objects: 406, done.
remote: Total 406 (delta 0), reused 0 (delta 0), pack-reused 406
Receiving objects: 100% (406/406), 58.10 KiB | 262.00 KiB/s, done.
Resolving deltas: 100% (131/131), done.

$ nodenv update

$ nodenv update

Updating nodenv
Updating nodenv-update

2.「nodenv-build」をインストール
$ git clone https://github.com/nodenv/node-build.git "$(nodenv root)"/plugins/node-build

$ git clone https://github.com/nodenv/node-build.git "$(nodenv root)"/plugins/node-build

Cloning into '/Users/xxx/.nodenv/plugins/node-build'...
remote: Enumerating objects: 134, done.
remote: Counting objects: 100% (134/134), done.
remote: Compressing objects: 100% (77/77), done.
remote: Total 19785 (delta 60), reused 105 (delta 43), pack-reused 19651
Receiving objects: 100% (19785/19785), 3.51 MiB | 2.73 MiB/s, done.
Resolving deltas: 100% (12674/12674), done.

nodenvでNode.jsのバージョンを指定してインストールする

インストールできるバージョンの確認を行います。
$ nodenv install --list

バージョンが表示されるので、そこからインストールしたいNode.jsバージョンを指定してインストールをします。
$ nodenv install 【バージョン】
※以下は執筆時最新推奨版 12.18.3 LTS

$ nodenv install 12.18.3

Downloading node-v12.18.3-darwin-x64.tar.gz...
-> https://nodejs.org/dist/v12.18.3/node-v12.18.3-darwin-x64.tar.gz
Installing node-v12.18.3-darwin-x64...
Installed node-v12.18.3-darwin-x64 to /Users/xxx/.nodenv/versions/12.18.3

ダウンロードの環境によりますが数秒程度で完了します。

新たにNode.jsバージョンを入れた時、npmパッケージをインストールした後などは、再構築するために、「nodenv rehash」を手動実行します。
$ nodenv rehash

nodenvで認識しているすべてのNode.jsバージョンを一覧表示して確認できます。
$ nodenv versions

$ nodenv versions

* system => v12.3.1 (set by /Users/xxx/.nodenv/version)
12.18.3

Node.jsバージョンの指定をして使う方法

グローバルのNode.jsバージョンは以下で指定します。
$ nodenv global 12.18.3

ローカルのプロジェクトで指定する時は、指定したいプロジェクトのディレクトリに移動してから、「nodenv local 【バージョン】」で指定します。通常はこちらのローカル指定を使い、環境ごとにバージョンを変えて使います。
※.node-versionファイルが作成され、管理されるようになります。
$ cd 【プロジェクトディレクトリ】

$ nodenv local 12.18.3

またローカルバージョンの設定を解除することもできます。
$ nodenv local --unset

Node.jsのアンインストール方法

アンインストールは以下で行います。

$ nodenv uninstall 12.18.3

その他

nodenvのアップデートを行うとき、「nodenv-update」プラグインをインストールしているので、以下でアップデートが可能です。
$ nodenv update

nodenv本体をアンインストールするときは、「~/.nodenv」を削除します。
$ rm -rf $(nodenv root)

まとめ

nodenvを利用すれば、「.node-version」ファイルが作成され、このファイルによってディレクトリを移動するだけでNode.jsのバージョンが変わるので、開発時に切替を忘れるなどのミスが無くなります。
Node.jsのバージョン管理ツールとして非常に便利なので、「nodenv」はオススメです。

※当サイトでは一部のリンクについてアフィリエイトプログラムを利用して商品を紹介しています