プロジェクト毎にNode.jsのバージョンが異なることはよくあることで、場面に応じて使用バージョンを切り替えられる環境は必須といえます。そして、Node.jsだけにとどまらず、PHPやPythonなどもバージョン管理できると便利です。そこで今回は、さまざまな言語のバージョン管理ツールを管理するanyenvを使って、nodenvでプロジェクト毎にNode.jsのバージョンを管理する方法です。
なんだかややこしい表現になってしまったので、言い換えます。
anyenvは、PHPならphpenv、Pythonならpyenv、Node.jsならnodenvといった具合にいろいろなenv系ツールを管理できるツールです。このanyenvを使ってnodenvでNode.jsのバージョン管理をする方法です。
使用環境はMacOSで、anyenvのインストールにHomebrewを使用します。事前にインストールされているものとしてすすめます。
anyenvをインストール
Homebrewでanyenvをインストールします。
$ brew install anyenv
初期設定をします。
$ anyenv init
ここで一度ターミナルを再起動。
すると以下のような警告が出ます。
ANYENV_DEFINITION_ROOT(/Users/whoami/.config/anyenv/anyenv-install) doesn't exist. You can initialize it by:
> anyenv install --init
焦らず、指示通りにやってみます。
$ anyenv install --init
Manifest directory doesn't exist: /Users/whoami/.config/anyenv/anyenv-install
Do you want to checkout https://github.com/anyenv/anyenv-install.git? [y/N]: y
マニフェストディレクトリを作るかどうか聞かれるので「y」と答えてエンターキーを押します。
Completed!と表示されたらOKです。
nodenvをインストール
次にnodenvをインストールしていきます。anyenvを使います。
$ anyenv install nodenv
Install nodenv succeeded!と出たらインストール成功です。
(exec $SHELL -l)するか再起動しろと言われるので、ここはコマンドでやってみます。
$ exec $SHELL -l
envを確かめます。
$ env
NODENV_ROOTやNODENV_SHELLが追加されていることがわかると思います。
では、いよいよNode.jsをインストールしていきます。
Node.jsをインストール
まずは、インストール可能なバージョンを確認します。
$ nodenv install --list-all / -L
めっちゃいっぱい出てきます。
ここに最新のNodeバージョンが表示されていない場合はanyenv-updateプラグインをインストールします。
$ mkdir -p $(anyenv root)/plugins
$ git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
以下を実行して一覧を更新します。
$ anyenv update
最新バージョンまで表示されました。
では、今度こそNode.jsをインストールしていきます。
とりあえず、執筆時点での推奨版あたりを入れておきます(v18.18.0)
$ nodenv install 18.18.0
インストールしたいバージョンを指定するだけです。
次に、私の場合、やや古い環境も必要なので古いバージョンもインストールしておきます。(今回は、v16.20.2)
$ nodenv install 16.20.2
次のコマンドでインストール済みのバージョンを確認することができます。
$ nodenv whence npm
ちなみに不要になったnodeをアンインストールする場合は以下のようにします。
$ nodenv uninstall 16.13.0
プロジェクト毎にバージョンを替える
まず、デフォルトのバージョンは最新バージョンに指定したいと思います。
$ nodenv global 18.18.0
globalで指定します。
確認してみます。
$ node -v
v18.18.0
次に、testプロジェクトでは先ほどインストールした古い方のv16.13.0を指定したいと思います。
$ cd test
test $ nodenv local 16.20.2
testプロジェクトのディレクトリに移動し、localでバージョンを指定します。
testディレクトリに.node-versionという隠しファイルが作成されたことがわかります。念のため、testディレクトリのローカルバージョンを確認します。
$ node -v
v16.20.2
これで、プロジェクト毎にNode.jsのバージョンを管理できるようになりました。