brunch

유연하게 프로젝트별 개발환경 자동 설정하기(nvm)

nvm deeper shell integration 활용

안녕하세요. 플랫폼 개발팀에서 프론트 개발을 하고 있는 마누입니다.


카카오헤어샵에서는 node.js환경에서 개발하고 있는 프론트엔드 프로젝트가 3개가 있습니다.

동료 개발자들은 이 3개의 프로젝트를 구분 없이 코드 작성해야 합니다. 그런데 이 프로젝트들은 배포환경에서 각각 다른 node.js 버전을 활용했습니다.

프로젝트를 옮겨다니면서 작업해야 할 텐데 매번 node.js를 삭제 / 재설치 하는 번거로움과 실수없이 어떻게 자동으로 적절한 node.js 버전을 설정할 수 있게 되었는지 그 방법을 공유하고자 합니다.



아래는 프론트엔드 개발자들이 맡고 있는 3개의 프로젝트입니다.


카카오헤어샵 프론트엔드 프로젝트들은 각각 다른 node.js 버전 환경에서 배포됩니다. 개발 환경의 node.js 버전이 이 배포환경의 node.js 버전과 다른 경우, 또 개발자들간에 한 프로젝트에서 다른 node.js버전을 활용하는 경우 lockfileVersion등이 달라질 수 있습니다. 그래서 배포환경과 개발자들의 개발환경의 node.js버전을 통일해서 이러한 에러를 막아야 합니다.


결국 여러 프로젝트를 옮겨다니며 작업해야 하는 개발자들이 번거롭게 node.js를 삭제하고 원하는 버전을 다시 설치 후 사용해야 했습니다.


nvm으로 node.js 버전 쉽게 변경하기


nvm is a version manager for node.js, designed to be installed per-user, and invoked per-shell. nvm works on any POSIX-compliant shell (sh, dash, ksh, zsh, bash), in particular on these platforms: unix, macOS, and windows WSL.


저희는 이러한 삭제 / 재설치의 번거로움을 피하기 위해 nvm을 활용하고 있습니다. nvm으로 node.js버전을 삭제하고 원하는 버전을 다시 설치하지 않아도 빠르게 버전을 변경할 수 있습니다.


우선 nvm을 설치하는 방법과 사용법은 링크를 남깁니다.


nvm의 기본적인 방법을 익히셨다면 아래로 갑시다.


1. nvm 명령어로 각 프로젝트에 맞게 node.js를 변경하기 (기본)


위에 남긴 링크에 있는 nvm의 명령어로 node.js 버전을 삭제/재설치없이 빠르게 변경할 수 있습니다.


하지만 이 경우에도 여전히 버전을 확인하고 버전을 변경해야하는 번거로움이 남습니다.


2. deeper shell integration으로 개발환경 자동 세팅하기 (추천)


nvm에서는 deeper shell integration을 제안하고 있습니다.

터미널을 실행하는 위치에 .nvmrc라는 파일이 있으면 터미널의 훅으로 이 파일에 쓰여있는 버전이 nvm에 설치되어 있는지 확인 후 없으면 자동으로 설치합니다. 그 후 해당 버전에 맞는 node.js버전을 nvm 명령어로 사용하게 됩니다.


이 방법을 사용하게 되면 이제 개발환경의 node.js 버전을 번거롭게 확인하지 않더라도 프로젝트를 옮겨다니며 올바른 node.js 버전을 배포환경과 항상 동일하게 사용할 수 있습니다.


여러분도 각자 다른 node.js환경에서 여러 프로젝트를 관리해야 한다면 이런 방법을 사용해보는 건 어떨까요?
@shopify/quilt, @tanstack/query, @toss/slash .nvmrc 사용 레포 참고링크


keyword
매거진의 이전글프로젝트에 테스팅 도입하기