
nvm (Node Version Manager) 이란?
단일 OS 에서 여러 버전의 Node.js를 격리하여 설치 및 관리하고, 환경변수를 동적으로 제어하여 필요한 버전을 선택적으로 활성하게 해주는 Node.js 버전 관리 도구임.
- 여러 프로젝트마다 요구하는 노드 버전이 다를 때(A는 v16, B는 v20 등) 이용됨.
사실, java script는 가장 많은 개발자를 보유한 언어이기 때문에 생각보다 많은 툴들이 java script로 만들어짐.
때문에 npm을 이용하여 설치해야하는 경우가 많고, 해당 Node.js와 npm을 적절히 관리하기 위한 nvm의 사용을 익혀두는게 좋음.
1. 설치 방법 (최신 버전 자동 추출)
Terminal 에서 아래 명령어를 실행하면 됨
# 최신 정식 릴리스 버전을 가져와서 설치함
export NVM_LATEST=$(curl -s https://api.github.com/repos/nvm-sh/nvm/releases/latest | grep -oP '"tag_name": "\K[^"]+')
curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_LATEST}/install.sh" | bash
- nvm의 최신 공식 릴리스 의 tag 명을 얻기 위해 curl로 해당 url의 페이지를 가져와서 grep을 Perl(-P)의 regex로 패턴에 매칭하는 부분(-o)만 추출을 수행.
- 해당 tag명을 NVM_LATEST 변수에 할당하고 이를 통해 최신 버전을 가져옴.
- https://api.github.com/repos/nvm-sh/nvm/releases/latest 에서 직접 살펴보고 curl에서 받아올 install.sh의 위치 결정해도 됨.
grep의 자세한 사용법은 다음을 참고:
이는 Linux 에서 설치이고,
macOS에선 brew를 이용하여 설치하는 방법이 보다 편함: brew install nvm
Windows에서는 nvm-windows 를 사용함: 다음 url 참고 https://github.com/coreybutler/nvm-windows/releases
위의 shell script를 macOS버전으로 바꾸면 대략 다음과 같음:
# 최신 정식 릴리스 버전 태그 가져오기 - macOS 호환
export NVM_LATEST=$(
curl -s https://api.github.com/repos/nvm-sh/nvm/releases/latest \
| sed -n 's/.*"tag_name": "\(.*\)".*/\1/p'
)
# 해당 버전의 공식 install.sh 실행
curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_LATEST}/install.sh" | bash
sed 에 대한 참고자료는 다음과 같음:
2024.05.11 - [Linux] - [Linux] sed (stream editor) 사용법
[Linux] sed (stream editor) 사용법
sed (stream editor) 사용법: sed (Stream Editor)는text stream을 처리하고 변형하는 데 사용되는매우 강력한 command based editor.처리를 명령어로 구성된 script로 지정함.2024.05.11 - [Linux] - [Linux] sed vs. ed vs. vi : 텍
ds31x.tistory.com
2024.05.11 - [Linux] - [linux] example: sed: -n option
[linux] example: sed: -n option
example: sed: -n optionNginx의 액세스 로그를 예로 들어 sed 명령어의 사용법을 살펴보는 문서임.예제 Nginx 액세스 로그다음은 Nginx 액세스 로그의 간단한 예제임.각 라인은 웹 서버에 대한 하나의 HTTP
ds31x.tistory.com
2. 환경 변수 적용
설치 직후엔 nvm 명령어가 안 먹힐 수 있음.
이는 PATH 에 해당 명령어가 잡히지 않은 경우가 대부분으로 terminal을 새로 열거나 아래 명령어로 설정을 불러오면 됨:
- Zsh 사용자 (Mac 기본):
source ~/.zshrc - Bash 사용자:
source ~/.bashrc
3. 주요 사용법
| 명령어 | 설명 |
nvm install --lts |
가장 안정적인 최신 LTS 버전 설치함 |
nvm install 20.10.0 |
특정 버전(20.10.0)을 직접 설치함 |
nvm ls |
내 컴에 깔린 노드 버전들 목록 보여줌 |
nvm use 18 |
설치된 버전 중 18 버전으로 즉시 교체함 |
node -v |
지금 적용된 노드 버전 확인함 |
nvm alias default 20 |
터미널 켤 때마다 기본으로 20버전이 뜨게 함 |
편리한 기능
nvm install 할 때 --reinstall-packages-from=current 옵션을 붙이면,
기존에 쓰던 npm 전역 패키지들을 새 버전 Node.js 에 해당하는 버전으로 알아서 새로 설치함.
다음을 참고할 것:
# 현재 버전의 전역 패키지들을 그대로 가져오면서 22버전 설치
nvm install 22 --reinstall-packages-from=current
# 특정 버전(예: 18.x)에 있는 패키지들을 가져오고 싶을 때
nvm install 20 --reinstall-packages-from=18
- 단순 복사가 아닌 새 버전에 맞춰 패키지들을 다시 다운로드하고 빌드하므로 시간이 걸릴 수 있음.
- 너무 버전 차이가 나는 경우엔, 일부 global 패키지가 최신 Node.js 버전과 호환되지 않아 에러 발생할 수 있음.
- 설치가 이루어진 이 후
npm list -g --depth=0로 확인해봐야 함.--depth=0는 사용자가 직접 설치한 메인 패키지들을 확인하게 해줌.
아래의 메시지 형태로 확인 가능: npm list -g --depth=0
/Users/username/.nvm/versions/node/v22.0.0/lib
├── npm@10.5.1
├── typescript@5.4.2
├── yarn@1.22.22
└── pm2@5.3.1
- 누락 확인: 네트워크 오류나 버전 호환성 문제로 특정 패키지만 설치가 실패했을 수도 있음
- version 체크: 새 Node.js 버전에 맞춰서 패키지들도 최신 버전으로 깔렸는지 확인 가능.
- 환경 확인: 가끔 의도치 않은 경로에 패키지가 깔리는 경우가 있는데, 맨 윗줄의 경로(예:
.../v22.0.0/...)를 보고 현재 내가 작업 중인 노드 버전이 맞는지 더블 체크가 가능
추가로, 이후 안 쓰는 버전은 nvm uninstall [버전]으로 지워서 용량 확보 가능함.
같이 보면 좋은 글들
2026.01.27 - [개발환경] - npm install 과 npm ci 의 차이
npm install 과 npm ci 의 차이
npm 이란Node.js 환경에서 사용하는 패키지 관리자(package manager)로,JavaScript 라이브러리의 설치, 버전 관리, 의존성 해결을 담당.npm은 Node Package Manager의 약자.더보기2024.09.08 - [utils] - [Summary] Package Mana
ds31x.tistory.com
'개발환경' 카테고리의 다른 글
| Gemini-cli: Custom Slash Command 만들기 (0) | 2026.03.26 |
|---|---|
| Gemini-cli: session 저장 및 되돌리기 (0) | 2026.03.26 |
| Gemini CLI: Extension, Skill, MCP, Tool (정리) (0) | 2026.03.16 |
| Install the WARP of Cloudflare (0) | 2026.03.12 |
| Cloudflare WARP: Secure Internet Routing and Network Optimization (0) | 2026.03.12 |