nvmrcの設定
はじめに
複数のプロジェクトを開発する際、各プロジェクトは異なるNode.jsバージョンを必要とする場合があります。このような場合、ターミナルでnvm installとnvm useコマンドを実行して各プロジェクトのNode.jsバージョンを指定し、バージョンをインストールして切り替える必要があります。
しかし、毎回ターミナルでコマンドを手動で実行するのは煩雑になります。特にプロジェクトの数が増えるにつれてそうです。バージョンの切り替えを忘れたり、間違ったバージョンに切り替えたりしやすく、プロジェクトが起動できなくなったり、実行中にエラーが発生したりする可能性があります。
これは、Node.jsバージョンを管理し、自動的に切り替える方法が必要な場合であり、ここで.nvmrcが登場します。
.nvmrcとは?
上記の説明から、.nvmrcファイルがプロジェクトのNode.jsバージョンを管理するために使用されることが理解できます。このファイルは非常にシンプルで、v18.12.0のようなnvmが認識できるNode.jsバージョンを表すテキストのみが含まれています。
.nvmrcファイルの使用方法は?
Node.jsバージョン番号またはnvmが理解できる他のテキストを含む.nvmrcファイルを作成できます。詳細については、ターミナルでnvm --helpと入力できます。
.nvmrcファイルを使用すると、バージョンを指定せずにターミナルでnvm use、nvm install、nvm exec、nvm run、nvm whichなどのコマンドを実行すると、.nvmrcファイルで指定されたバージョンが使用されます。
.nvmrcファイルの作成
たとえば、現在のディレクトリで、nvmに18.12の最新リリース、最新のLTSバージョン、または最新のNode.jsバージョンを指定させるには、echoコマンドを使用して.nvmrcファイルを作成できます:
bash
$ echo "18.12" > .nvmrc
# 最新のLTSバージョンに設定
$ echo "lts/*" > .nvmrc
# 最新バージョンに設定
$ echo "node" > .nvmrcnvm useのようなコマンドは、現在のディレクトリから上位にディレクトリ構造をたどって.nvmrcファイルを探します。つまり、.nvmrcファイルを持つディレクトリのサブディレクトリでnvm useのようなコマンドを実行しても、その.nvmrcファイルが使用されます。
.nvmrcファイルには、nvm --helpにリストされているものに準拠した<version>が含まれている必要があり、その後に改行が続きます。末尾のスペースは許可されておらず、末尾の改行は必須です。
下の画像に示すように、v14.21.3の後にスペースはなく、改行のみです。

シェルターミナルとの深い統合
avnを使用してシェルと深く統合し、ディレクトリを変更するときに自動的にnvmを呼び出すことができます。
軽量なソリューションを好む場合は、以下の方法を使用できます。
.nvmrcファイルに基づいてzshターミナルでNode.jsバージョンを自動的に切り替える
以下のコードを$HOME/.zshrcに追加した後、.nvmrcファイルを含むディレクトリに入るたびにnvm useが自動的に呼び出されます。.nvmrcファイル内の文字列は、使用するNode.jsバージョンをnvmに指示します。
bash
# ホームディレクトリを開き、.zshrcファイルを編集
$ cd
$ vi .zshrcこれは.zshrcに書き込む必要があるコードです:
bash
# このコードセグメントを.zshrcファイルにコピー
# nvmの初期化後に配置してください!
autoload -U add-zsh-hook
load-nvmrc() {
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" != "$(nvm version)" ]; then
nvm use
fi
elif [ -n "$(PWD=$OLDPWD nvm_find_nvmrc)" ] && [ "$(nvm version)" != "$(nvm version default)" ]; then
echo "Reverting to nvm default version"
nvm use default
fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc.zshrcファイルを編集した後、source .zshrcを実行してコマンドを有効にします:
bash
$ source ~/.zshrc.nvmrcファイルのあるプロジェクトで、vscodeで統合ターミナルを開くと、nvm useが自動的に実行され、コマンドラインに対応する出力が表示されます。
