2023년 9월 22일에 작성한 이전 블로그 글을 옮겨왔습니다.
원문: https://www.richardhuf.com.au/using-node-version-manager-and-nvmrc-to-automatically-switch-node-versions-per-project/ (참고로, 원문 그대로 번역한 것은 아닙니다.)

프로젝트마다 사용하는 Node.js 버전이 다르다 보니, 저희는 NVM(Node Version Manager)을 활용해서 로컬 환경의 Node 버전을 수시로 바꿔가며 작업하고 있습니다. 다만 이게 수동으로 해야 한다는 점 때문에 가끔 깜빡하게 되더라고요.
nvm list로 현재 버전을 확인하고, nvm use {version}으로 원하는 버전을 선택하는 일 자체는 몇 초도 안 걸리지만, 여러 프로젝트를 오가다 보면 꽤 번거롭고 잊어버리기 쉽습니다.
특히 팀 단위로 협업할 때 각자 다른 Node 버전을 쓰게 되면 예상치 못한 문제들이 생길 수 있어서, 이를 방지하기 위한 설정을 공유해드리려고 합니다.
프로젝트 디렉토리에 들어가는 순간 자동으로 해당 프로젝트가 요구하는 Node 버전으로 전환되도록 만드는 방법입니다.
🔧 .zshrc 파일 수정하기
mac, zsh 환경을 기준으로 설명합니다.
먼저 .zshrc 파일을 열어줍니다.
$ vi ~/.zshrc
파일 하단에 아래 내용을 추가해주세요.
# >>> auto load nvmrc >>>
autoload -U add-zsh-hook
load-nvmrc() {
if [[ -f .nvmrc && -r .nvmrc ]]; then
nvm use
elif [[ $(nvm version) != $(nvm version default) ]]; then
echo "Reverting to nvm default version"
nvm use default
fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc
# <<< auto load nvmrc <<<
설정을 반영합니다.
$ source ~/.zshrc
📝 프로젝트에 .nvmrc 파일 추가하기
이제 프로젝트 루트에 .nvmrc 파일을 만들어서 사용할 Node 버전을 명시해야 합니다.
프로젝트 루트에 .nvmrc 파일을 추가하고, 사용할 버전을 아래처럼 입력하고 저장합니다.
v18.13.0
현재 로컬 환경에서 선택된 Node 버전을 자동으로 .nvmrc 파일에 반영하고 싶다면, 아래 명령어를 입력하면 됩니다.
$ node -v > .nvmrc
이제 설정한 폴더로 이동해볼게요.
$ cd my-project
Reverting to nvm default version
Now using node v18.13.0 (npm v8.1.2)
자동으로 nvm use 명령어가 .nvmrc 파일에 적힌 버전으로 실행되는 것을 확인할 수 있습니다.
💡 .nvmrc 파일 사용의 이점
이제 이 파일을 버전 관리 시스템에 커밋해두면, 팀원들도 동일한 Node 버전을 사용하게 할 수 있습니다. (물론 각자 위에서 설명한 .zshrc 파일 설정은 직접 해야 합니다.)
마무리
웹에서 .nvmrc 파일 설정법을 찾아보긴 했지만, 최종 결과를 얻기까지는 여러 링크와 스레드를 돌아다니며 정보를 모아야 했습니다. 저도 이 과정에서 꽤 헤맸던 기억이 나서, 비슷한 상황에 계신 분들께 조금이나마 도움이 되길 바라며 정리해봤습니다.
참고로, Netlify 같은 배포 파이프라인에서도 .nvmrc 파일을 활용해 Node 버전을 설정할 수 있으니, 배포 환경까지 고려한다면 더욱 유용하게 쓸 수 있을 거예요.