ディレクトリ、またはプロジェクトごとに利用しているNode.jsのバージョンを自動的に切り替える方法(nvm使用)
ディレクトリ・プロジェクト内で設定されているNode.jsのバージョンを自動的に切り替える
前提条件
ここでは nvm
を利用して、この設定を行うので、まずは nvm
がインストールされていることが条件。
nvmrcをプロジェクトルートに置くことで、自動的に切り替えるようにする
nvm
を利用して、プロジェクトごとに異なるNode.jsのバージョンを利用して開発を行うケースがある。
このような場合、こっちのプロジェクトではNodeのv12系、こちらではNodeのv10系に切り替える、などといちいちNode.jsのバージョンの切り替えを行うのが大変手間である。
nvm
ではプロジェクトで利用しているNode.jsのバージョンを記載した .nvmrc
ファイルをプロジェクトのルートに置いておくことで、ディレクトリを移動した際に勝手にNode.jsのバージョンを読み取って、使用しているNode.jsのversionに自動的に切り替えるやり方がある。
設定の方法はnvmのREADMEに記載されていた。
私はzsh
を使っているので、下記を参考にした。
https://github.com/nvm-sh/nvm#calling-nvm-use-automatically-in-a-directory-with-a-nvmrc-file
上にも書いてあるが、自身の ~/.zshrc
内に下記を追記すればOKだった。
(これをそのままコピペするだけで動く)
# place this after nvm initialization! autoload -U add-zsh-hook load-nvmrc() { local node_version="$(nvm version)" local nvmrc_path="$(nvm_find_nvmrc)" if [ -n "$nvmrc_path" ]; then local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")") if [ "$nvmrc_node_version" = "N/A" ]; then nvm install elif [ "$nvmrc_node_version" != "$node_version" ]; then nvm use fi elif [ "$node_version" != "$(nvm version default)" ]; then echo "Reverting to nvm default version" nvm use default fi } add-zsh-hook chpwd load-nvmrc load-nvmrc
.nvmrc
が用意されているプロジェクトに移動したタイミングで、.nvmrc
に記述されたnodeのversionを読み取って、nvm use
してくれる。
(そのバージョンがないローカルにない場合、 nvm install
してくれるようだ)
この設定を行ってから、Node.jsの開発がだいぶ楽になったので、備忘録として残しておく。
そう言えば過去にnvm関連の投稿をしていたので、そちらも載せておく。
(最近 nvm
を更新していなかったことに今気づいたので、これ見て nvm のversionあげたところ。ちなみにアップデート前の最新のコミットログが2018年だった..)