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 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의 기본적인 방법을 익히셨다면 아래로 갑시다.
위에 남긴 링크에 있는 nvm의 명령어로 node.js 버전을 삭제/재설치없이 빠르게 변경할 수 있습니다.
하지만 이 경우에도 여전히 버전을 확인하고 버전을 변경해야하는 번거로움이 남습니다.
nvm에서는 deeper shell integration을 제안하고 있습니다.
터미널을 실행하는 위치에 .nvmrc라는 파일이 있으면 터미널의 훅으로 이 파일에 쓰여있는 버전이 nvm에 설치되어 있는지 확인 후 없으면 자동으로 설치합니다. 그 후 해당 버전에 맞는 node.js버전을 nvm 명령어로 사용하게 됩니다.
이 방법을 사용하게 되면 이제 개발환경의 node.js 버전을 번거롭게 확인하지 않더라도 프로젝트를 옮겨다니며 올바른 node.js 버전을 배포환경과 항상 동일하게 사용할 수 있습니다.
여러분도 각자 다른 node.js환경에서 여러 프로젝트를 관리해야 한다면 이런 방법을 사용해보는 건 어떨까요?
@shopify/quilt, @tanstack/query, @toss/slash .nvmrc 사용 레포 참고링크