Node.js 설치와 버전 관리 — nvm 완전 정리
한 프로젝트는 18, 다른 프로젝트는 22. nvm 하나면 깔끔하게 갈아탄다.
1편에서 Node.js 의 큰 그림을 잡았다. 이제 실제로 깔자. 그런데 그냥 공식 사이트 가서 .dmg·.msi 받아 설치하면 안 된다 — 일은 잘 되지만 몇 달 뒤 후회한다. 회사 프로젝트는 Node 18, 사이드 프로젝트는 22, AI 라이브러리는 20 — 이런 충돌이 곧 생기기 때문.
해답은 nvm (Node Version Manager). 명령어 한 줄로 버전을 갈아탄다. 글로벌 설치 대신 처음부터 nvm 으로 가는 게 이 교재의 기본 가정이다.
1. 왜 nvm 인가 — 글로벌 설치의 함정
공식 사이트 인스톨러로 Node 20 을 깔았다고 치자. 한 달 뒤 회사 프로젝트가 "Node 18 이어야 합니다" 라고 한다. 어떻게 해결?
- 20 을 지우고 18 을 다시 깐다 → 사이드 프로젝트가 깨진다.
- 그냥 20 으로 우긴다 → 빌드가 빨간 에러를 토한다.
- 나만의 Docker 컨테이너로 우회한다 → 매번 띄우기 귀찮다.
nvm 의 답은 "둘 다 깔아두고 그때그때 바꾼다". 디렉터리별로 자동 전환도 된다. cd ~/work 하면 18, cd ~/side 하면 22 — 이 정도가 표준이다.
fnm (Rust 로 빨리 시작) · asdf (Node 외 Ruby·Python 까지 같이) · volta (자동 핀 강력) 등이 있다. 이 교재는 표준이자 자료가 가장 많은 nvm 으로 통일한다.
2. 설치 — 맥 · 우분투 · 윈도우
OS 별로 명령이 다르다. 본인 환경 한 가지만 보면 된다.
맥 / 우분투 / WSL — nvm-sh
터미널 한 줄:
설치 후 새 터미널을 열거나 source ~/.bashrc (zsh 라면 ~/.zshrc) 한 번. 확인:
nvm 이라고 출력되면 OK. 명령이 없다고 하면 .bashrc/.zshrc 끝에 nvm 스크립트가 추가됐는지 보고, 없으면 재실행.
윈도우 — nvm-windows
윈도우는 다른 프로젝트다 (이름만 같음). GitHub coreybutler/nvm-windows 의 nvm-setup.exe 를 다운로드 받아 더블클릭 설치. 명령어 모양은 거의 같지만 일부 옵션이 다르니 공식 README 한 번 훑기.
3. 사용법 — 명령 6개면 충분
nvm 명령은 많지만 일상에선 6개로 충분하다.
| 명령 | 동작 |
|---|---|
nvm ls-remote | 설치 가능한 모든 Node 버전 목록 |
nvm install 22 | Node 22 최신을 받아 설치 |
nvm install --lts | 현재 LTS 버전을 자동 선택해 설치 |
nvm use 22 | 현재 셸에서 22 로 전환 |
nvm alias default 22 | 새 셸에서 기본으로 쓸 버전 지정 |
nvm ls | 로컬에 깔린 버전 목록 + 현재 활성 버전 |
처음 깔 때 권장 흐름:
LTS 를 기본으로 두면 안정적이다. 22 는 따로 깔아두고 필요할 때만 nvm use 22.
4. 프로젝트별 자동 전환 — .nvmrc
실전에서 가장 유용한 기능. 프로젝트 루트에 .nvmrc 파일을 만들고 한 줄 적어둔다:
그 폴더로 cd 했을 때 nvm use 만 입력하면 .nvmrc 를 읽어 자동 전환된다. 더 나아가 ~/.bashrc 에 셸 훅을 추가하면 cd 만 해도 자동으로 버전 바꿈. nvm 공식 README 의 "Deeper Shell Integration" 섹션에 복사할 코드가 있다.
.nvmrc 를 git 에 커밋해두면, 새로 합류한 사람이 nvm use 한 번으로 우리 팀과 같은 버전을 쓰게 된다. "내 컴퓨터에선 되는데요" 의 60% 가 이걸로 사라진다.
5. LTS 선택 가이드 — 22 vs 20 vs 18
2026 기준 현역 LTS 는 3개. 어느 걸 골라야 하나.
| 버전 | 상태 | 권장 |
|---|---|---|
| 22.x | Active LTS (현행) | 신규 프로젝트 기본값. 이 교재가 따라가는 버전. |
| 20.x | Maintenance LTS | 회사 기존 프로젝트가 20 으로 굳어진 경우. |
| 18.x | End of Life | 레거시 유지 보수만. 신규 진입 비추천. |
Node 는 짝수 버전이 LTS 다 (18·20·22·24…). 홀수 버전(19·21·23)은 실험판이라 production 금지. 신규는 짝수 중 가장 큰 활성 LTS — 2026 기준 22.
요약 — 2편 좌표
여기까지 핵심. Node 는 공식 인스톨러 대신 nvm 으로 깔자 — 글로벌 설치 함정을 피하고 프로젝트별 버전 전환이 가능. 맥·우분투·WSL 은 curl … nvm-sh/install.sh 한 줄, 윈도우는 nvm-windows(권장은 WSL2). 명령은 install --lts·use·alias default·ls 정도면 일상 충분. 프로젝트 루트에 .nvmrc 를 커밋해두면 팀이 같은 버전을 자동으로 쓴다. 다음 편에서 REPL 과 첫 스크립트를 실행해 본다.
다음 편 예고 — REPL 과 첫 스크립트
node 명령으로 자바스크립트 실행. REPL 인터랙티브 모드와 node hello.js 의 차이.