Node.js 버전 관리가 필요한 이유
개발을 하다 보면 프로젝트마다 다른 Node.js 버전이 필요한 상황이 자주 발생합니다. 예를 들어, 레거시 프로젝트는 Node.js 14를 사용하는데 새로운 Next.js 프로젝트는 Node.js 20이 필요할 수 있죠. 이런 상황에서 NVM이 해결책이 됩니다.
NVM의 이해와 특징
NVM(Node Version Manager)은 Python의 pyenv와 비슷한 역할을 하는 도구입니다.
python에는 PYENV가 있듯이 Node에는 NVM이 있고 개발자가 여러 버전의 Node.js를 쉽게 설치하고 전환할 수 있게 해주며, 프로젝트별로 독립적인 Node.js 환경을 구성할 수 있습니다.
가장 큰 장점은 프로젝트 요구사항에 따라 Node.js 버전을 자유롭게 전환할 수 있다는 것입니다. 또한 root 권한 없이도 Node.js를 설치하고 관리할 수 있어 보안 측면에서도 유리합니다.
NVM의 주요 장점
- 여러 Node.js 버전을 동시에 설치 가능
- 프로젝트별로 다른 Node.js 버전 사용 가능
- 버전 전환이 쉬움
- 권한 문제 없이 Node.js 설치/관리 가능
- linux나 macOS등 다양한 운영체제를 지원.
NVM 설치 및 설정 방법
NVM 설치는 간단한 스크립트 실행으로 가능합니다. 하지만 제대로 된 설정을 위해서는 몇 가지 추가 단계가 필요합니다:
▣ NPM 설치 및 설정
● NVM 설치 스크립트 다운 및 실행
( root 권한으로 진행 권장 )
# NVM 설치 스크립트 다운로드 및 실행
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
# 성공
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 15916 100 15916 0 0 33714 0 --:--:-- --:--:-- --:--:-- 33791
=> nvm is already installed in /root/.nvm, trying to update using git
=> => Compressing and cleaning up git repository
=> nvm source string already in /root/.bashrc
=> bash_completion source string already in /root/.bashrc
=> Close and reopen your terminal to start using nvm or run the following to use it now:
● NVM 환경 변수 설정
( ashrc 에 환경변수 설정을 통해 사용자 세션의 일관성 및 편리하게 환경 설정을 이용하기 위해서 입니다. )
# bashrc 위치로 이동
cd ~
# bash 수정
vi .bashrc
# 다음 내용 추가
export NVM_DIR="/apps/node/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
# 환경변수 적용
source ~/.bashrc
# 최신 LTS 버전의 Node.js 20 설치
nvm install 20
# 설치된 버전을 기본으로 설정
nvm alias default 20
# Node.js 20 사용
nvm use 20
# 설치확인
node --version # v20.x.x 출력
# 결과 -> v20.18.0
npm --version # npm 버전 확인
# 결과 -> 10.8.2
※ 주의 사항
● NVM을 통해 설치한 Node.js는 시스템 전역이 아닌 사용자 환경에 설치해야 합니다.
- 시스템 전역 설치: 모든 사용자가 접근 가능, root 권한 필요
- NVM 설치: 특정 사용자만 접근 가능, root 권한 불필요
● 새 터미널을 열 때마다 nvm use 명령어를 실행해야 합니다.
- 기본적으로 bashrc에 버전을 명시해 놨지만, 다른 버전을 사용하고 싶다면 명령어를 실행하시면 됩니다.
● 프로젝트에서 특정 Node.js 버전을 강제하려면, .nvmrc 파일을 사용하면 됩니다.
프로젝트별 버전 관리 전략
실무에서는 .nvmrc 파일을 통해 프로젝트의 Node.js 버전을 명시적으로 관리하는 것이 좋습니다. 이는 팀 멤버들이 동일한 버전을 사용하도록 보장합니다.
ex)
# 프로젝트 루트에 .nvmrc 파일 생성
# 특정 버전 지정
echo "20.9.0" > .nvmrc
# 또는
echo "lts/*" > .nvmrc
# 최신 LTS 버전 사용
# 자동으로 해당 버전 사용
nvm use
# 프로젝트 예시
/apps/myproject/
├── .nvmrc # Node.js 버전 지정
├── package.json
└── src/
주의사항과 모범 사례
NVM을 사용할 때 몇 가지 주의해야 할 점이 있습니다:
- 시스템 전역 설치 vs NVM 설치의 차이점을 이해해야 합니다
- 새 터미널 세션에서는 명시적으로 nvm use 명령을 실행해야 할 수 있습니다
- CI/CD 환경에서는 .nvmrc 파일을 통한 버전 관리가 특히 중요합니다
이러한 도구들을 이해하고 적절히 활용하면 Node.js 기반 프로젝트의 개발 환경을 훨씬 효율적으로 관리할 수 있습니다. 특히 Next.js와 같은 최신 프레임워크를 사용할 때는 정확한 Node.js 버전 관리가 프로젝트의 성공에 매우 중요합니다.