Skip to content

nvmrcの設定

はじめに

複数のプロジェクトを開発する際、各プロジェクトは異なるNode.jsバージョンを必要とする場合があります。このような場合、ターミナルでnvm installnvm 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 usenvm installnvm execnvm runnvm whichなどのコマンドを実行すると、.nvmrcファイルで指定されたバージョンが使用されます。

.nvmrcファイルの作成

たとえば、現在のディレクトリで、nvmに18.12の最新リリース、最新のLTSバージョン、または最新のNode.jsバージョンを指定させるには、echoコマンドを使用して.nvmrcファイルを作成できます:

bash
$ echo "18.12" > .nvmrc
# 最新のLTSバージョンに設定
$ echo "lts/*" > .nvmrc
# 最新バージョンに設定
$ echo "node" > .nvmrc

nvm useのようなコマンドは、現在のディレクトリから上位にディレクトリ構造をたどって.nvmrcファイルを探します。つまり、.nvmrcファイルを持つディレクトリのサブディレクトリでnvm useのようなコマンドを実行しても、その.nvmrcファイルが使用されます。

.nvmrcファイルには、nvm --helpにリストされているものに準拠した<version>が含まれている必要があり、その後に改行が続きます。末尾のスペースは許可されておらず、末尾の改行は必須です。

下の画像に示すように、v14.21.3の後にスペースはなく、改行のみです。

nvmrc

シェルターミナルとの深い統合

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が自動的に実行され、コマンドラインに対応する出力が表示されます。

nvmrc

NVM for Node.js by www.nvmnode.comで構築