Node.js 프로젝트 실행할 때 버전 문제? '.nvmrc' 로 해결하자! 🚀

namu·2025년 1월 19일

Node.js 프로젝트를 실행하다 보면, 다른 사람이 만든 프로젝트가 Node 버전 문제로 실행되지 않거나, 일부 라이브러리가 호환되지 않아 곤란했던 경험이 한 번쯤은 있으셨을 겁니다.

물론 README.md 파일에 Node 버전을 명시하는 것도 방법이지만,
명령어 한 줄로 버전을 동기화할 수 있다면 훨씬 더 편리하지 않을까요? 😊


🛠 .nvmrc 파일로 Node 버전 관리하기

.nvmrc 파일은 Node 버전을 기록해 두는 간단한 파일입니다.
설정 방법도 매우 간단합니다!

1️⃣ .nvmrc 파일 생성

프로젝트 최상단(root 디렉터리)에 .nvmrc 파일을 생성합니다.

2️⃣ 프로젝트에서 사용할 Node 버전 명시

아래와 같은 형식으로 원하는 Node 버전을 .nvmrc 파일에 작성하면 됩니다.

v20.18.1  # 특정 버전 명시 (v 접두사 포함)
20.18.1    # 특정 버전 (v 없이도 가능)
20         # major 버전만 지정 (최신 minor/patch 적용)
lts/iron   # 특정 LTS 버전 사용

이제 협업자는 프로젝트에 접근한 후, 아래 명령어 한 줄만 입력하면 됩니다.

nvm use

🎉 이 한 줄만 입력하면 Node 버전이 자동으로 동기화됩니다!


🔄 .nvmrc 자동 적용하기

프로젝트마다 매번 nvm use를 입력하는 게 귀찮다면?
👉 자동으로 .nvmrc에 설정된 Node 버전을 적용하는 방법이 있습니다!

Deeper Shell Integration을 설정하면,
프로젝트에 .nvmrc 파일만 존재하면 별도로 nvm use를 입력하지 않아도 자동으로 Node 버전이 변경됩니다.

⚙️ 설정 방법

아래 코드를 ~/.zshrc 파일에 추가하세요.

# nvm 자동 적용: 프로젝트 이동 시 `.nvmrc` 확인 및 적용
autoload -U add-zsh-hook

load-nvmrc() {
  local nvmrc_path
  nvmrc_path="$(nvm_find_nvmrc)"

  if [ -n "$nvmrc_path" ]; then
    local nvmrc_node_version
    nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")

    if [ "$nvmrc_node_version" = "N/A" ]; then
      nvm install  # .nvmrc에 명시된 버전이 없으면 자동 설치
    elif [ "$nvmrc_node_version" != "$(nvm version)" ]; then
      nvm use  # .nvmrc에 맞는 버전으로 자동 변경
    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

✅ 이렇게 바뀝니다!

📌 프로젝트 디렉터리 이동 시, 자동으로 .nvmrc 파일을 읽고 Node 버전을 변경해 줍니다.
📌 설치되지 않은 버전이라면 자동으로 설치까지 진행됩니다.
📌 프로젝트를 빠르게 전환할 때 더 이상 nvm use를 입력할 필요 없음!

💡 설정 후 source ~/.zshrc를 실행하면 바로 적용됩니다.


📌 아직 사용해보진 않았지만…

이 방법은 제가 아직 직접 사용해보지는 않았습니다. 하지만,
👉 Deeper Shell Integration 공식 문서
👉 참고한 블로그 글

이 두 자료에서 더 자세한 내용을 확인할 수 있습니다.


🎯 같이 읽으면 좋은 글

📌 nvm을 활용한 Node 버전 관리 방법

profile
web dev

0개의 댓글