brunch

You can make anything
by writing

C.S.Lewis

유연하게 프로젝트별 개발환경 자동 설정하기(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 사용 레포 참고링크


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari