Build/Etc.

NVM으로 Node.js 버전 바꾸기

iam102 2024. 3. 3. 14:18

개인 노트북에서 급하게 업무를 보게 되었는데 작업을 해야 할 프로젝트 환경은 Node 16버전에 맞춰져 있었고 개인 환경은 현재 Node LTS 버전인 20버전을 사용하다 보니 packge dependency 설치에 오류가 발생했습니다.

 

그래서 NVM에 대해 찾아보고 설치하여 맞는 Node 버전으로 스위칭하여 업무를 할 수 있었습니다. 이번 기회에 간단하게 NVM에 대해 알아보겠습니다.

 

NVM?

NVM은 Node Version Manager로 command line을 통해 원하는 Node 버전으로 설치할 수 있습니다. 또한 설치된 Node 버전에 따라 npm 버전도 따라서 설치됩니다.

 

NVM 설치 및 적용

Window에서 설치 방법

해당 nvm-widows github에서 nvm-setup.exe을 다운로드 후 설치를 진행합니다.

Mac에서 설치 방법

아래 command line으로 nvm을 설치합니다.

# nvm 설치
sudo curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.39.7/install.sh | bash

# 설치 후 설치 확인을 위한 nvm 명령어(nvm으로 설치된 node 버전 확인) 입력
nvm ls

 

※ bash 쉘 기준에서 해당 오류가 뜬다면? ⇒ -bash: nvm: command not found

# bash_profile vi 에디터 접근
vi ~/.bash_profile

# vi 에디터에서 해당 코드가 없을 경우 추가 후 저장
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm

#
source ~/.bash_profile

# 재확인
nvm ls

 

zsh 쉘 기준에서 해당 오류가 뜬다면?  zsh: command not found: nvm

# zshrc vi 에디터 접근
vi ~/.zshrc

# vi 에디터에서 해당 코드가 없을 경우 추가 후 저장
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

#
source ~/.zshrc

# 재확인
nvm ls

 

설치 및 설정이 완료되었다면 아래와 같이 확인할 수 있습니다.

->       system
node -> stable (-> N/A) (default)
iojs -> N/A (default)

 

설치 관련하여 nvm github에서 자세하게 확인할 수 있습니다.

 

Node 버전 적용

원하는 Node 버전으로 설치하기 위해 해당 명령어를 통해 실행합니다.

# nvm install <설치할 Node 버전>
% nvm install 16
Now using node v16.20.2 (npm v8.19.4)
% node -v
v16.20.2

# 특정 버전 Node 설치
% nvm install 18.12.0
Now using node v18.12.0 (npm v8.19.2)
% node -v
v18.12.0

# nvm use <사용할 Node 버전>
% nvm use 16
Now using node v16.20.0 (npm v8.19.4)
% node -v
v16.20.0

% nvm use 20
Now using node v20.11.1 (npm v10.2.4)
% node -v
v20.11.1

 

메이저 버전만 명시할 경우 메이저 버전의 LTS 버전으로 설치됩니다. 명령어 관련 내용도 nvm github에서 자세하게 확인할 수 있습니다.

 

마무리

따로 개발 환경이 셋팅된 VM이나 도커에서 개발을 진행하면 호스트의 Node 버전에 영향이 없어서 상관이 없겠지만 그렇지 못할 경우 NVM을 이용하면 원하는 Node와 npm 버전으로 쉽게 셋팅할 수 있어서 좋았습니다. Node 버전을 바꿔야 하는 상황이 있다면 NVM을 이용해 보는 것도 좋겠습니다.

 


참고 자료

https://github.com/nvm-sh/nvm

https://gist.github.com/falsy/8aa42ae311a9adb50e2ca7d8702c9af1