Node.js 생태계에 처음 접하는 개발자를 대상으로, Node.js의 역할과 npm, nvm의 기능을 설명하며 Java의 Maven/Gradle과 같은 개념을 통해 차이점과 연관성을 명확히 설명합니다.
1. Node.js란?
Node.js는 Google Chrome의 V8 엔진을 기반으로 한 JavaScript 런타임 환경입니다. 브라우저 외에도 서버, CLI, 데스크탑 애플리케이션, IoT 장치에서 실행이 가능합니다.
1.1 주요 특징
- V8 엔진 기반: 고성능의 JavaScript 실행을 제공합니다.
- 이벤트 기반 비차단 I/O: 동시 요청 처리에 적합한 아키텍처입니다.
- 싱글스레드 + 이벤트 루프: 멀티스레드 없이 대규모 연결 처리가 가능합니다.
- 풍부한 생태계: 내장된 npm을 통해 10만 개 이상의 패키지 사용이 가능합니다.
1.2 주요 활용 분야
- 웹 백엔드: Express, NestJS 등으로 API 서버 구축
- 프론트엔드 툴체인: Webpack, Babel 등 빌드 도구 개발
- 실시간 애플리케이션: 채팅, 게임, 협업 툴 개발
- 데스크탑 애플리케이션: Electron 기반 앱 개발 (예: VS Code)
- 스크립트 개발: CLI 도구 및 자동화 스크립트 작성
2. npm란?
npm(Node Package Manager)은 Node.js의 패키지 관리 시스템으로, Java의 Maven과 유사한 기능을 제공합니다.
2.1 주요 기능
- 패키지 설치:
npm install express로 의존성 추가 - 의존성 관리:
package.json파일을 통해 버전 제어 - 패키지 공유: npm 공식 저장소에 패키지 배포 (예: React, Lodash)
- 스크립트 관리:
scripts섹션에서 명령어 정의
2.2 npm vs Maven 비교
| Java 세계 | Node.js 세계 | 기능 |
|---|---|---|
| Maven / Gradle | npm / yarn / pnpm | 패키지 관리 |
| pom.xml | package.json | 의존성 및 프로젝트 설정 |
| Maven Central | npm registry | 중앙 저장소 |
| mvn install | npm install | 의존성 다운로드 |
| mvn clean package | npm run build | 빌드 파이프라인 |
2.3 중국 내 레지스트리 설정
npm 기본 리포지토리는 해외 서버로 인해 속도가 느릴 수 있습니다. 다음은 대안적인 레지스트리 설정 방법입니다:
npm install axios --registry=https://registry.npmmirror.com/
npm config set registry https://registry.npmmirror.com/
npm config get registry
npm config set registry https://registry.npmjs.org/
2.4 cnpm 설치 옵션
cnpm은 타오바오 레지스트리용 CLI 도구로, npm과 동일한 방식으로 작동하며 더 빠른 속도를 제공합니다:
npm install -g cnpm --registry=https://registry.npmmirror.com/
cnpm install axios
3. nvm란?
nvm(Node Version Manager)은 Node.js 버전 관리 도구로, 여러 버전의 Node.js를 설치하고 전환할 수 있습니다.
3.1 주요 기능
- 버전 설치 및 전환:
nvm install 16,nvm use 18 - 버전 충돌 해결: 프로젝트별로 다른 Node.js 버전 사용 가능
- 버전 업그레이드:
nvm upgrade명령어로 최신 버전으로 업데이트
4. 생태계 위치 요약
| 도구 | Java 대응 도구 | 기능 | 버전 확인 명령 |
|---|---|---|---|
| Node.js | JDK | JavaScript 실행 환경 | node -v |
| nvm | SDKMAN/jEnv | Node.js 버전 관리 | nvm -v |
| npm | Maven/Gradle | 패키지 및 빌드 관리 | npm -v |