반응형

처음 node를 접할때 많이들 
node / npm / npx의 역할 차이, 그리고
글로벌 설치(-g), 일반 설치, 개발용 설치(-D) 를 헷갈려 한다.

이 글은 처음 Node 생태계를 접하는 분들을 위한 기초개념 내용이다.

 

1. node / npm / npx는 각각 뭐 하는 놈인가?

  • node: JavaScript 실행기
  • npm: 패키지 설치/관리 도구
  • npx: 패키지를 “설치 없이 실행”해주는 실행기

구조로 보면 아래와 같다.

Node.js
 ├─ node  (런타임)
 ├─ npm   (패키지 관리자)
 └─ npx   (패키지 실행기)

 

2. npm은 “설치”, npx는 “실행”

npm: 패키지 설치 담당

npm install express
npm install -D typescript

 

  • node_modules에 패키지를 다운로드
  • package.json과 package-lock.json 갱신

npx: 패키지 실행 담당

npx tsc --init

 

이 명령의 실제 의미는:

  1. 현재 프로젝트에 typescript가 설치돼 있으면 사용
  2. 없으면 임시로 다운로드
  3. tsc 실행
  4. 끝나면 버림

=> 설치 없이 실행
=> 전역 설치 없이도 CLI 사용 가능

 

3. npx tsc --init는 정확히 무슨 의미인가?

 

“TypeScript 컴파일러에게 이 프로젝트의 기본 설정 파일을 만들어달라”

 

  • tsc: TypeScript Compiler
  • --init: 컴파일 X (설정 파일 생성 옵션)

결과:

tsconfig.json 생성
 

 

컴파일은 전혀 하지 않는다.

 

4. npm 설치 방식 3가지 정리

① 글로벌 설치 (-g)

npm install -g typescript
  • Node 설치 경로 하위에 설치
  • 해당 PC의 모든 프로젝트에서 공용 사용
  • 버전 충돌 위험 큼
  • 요즘은 거의 사용 안 함

② 일반 설치 (dependencies)

npm install express

 

  • 프로젝트 하위 node_modules 폴더에 설치
  • 런타임에 필요
  • 서버 실행 시 사용됨
"dependencies": {
  "express": "^4.19.0"
}

 

③ 개발용 설치 (-D, devDependencies)

npm install -D typescript

 

  • 개발 / 빌드 시에만 필요
  • 런타임에는 필요 없음
  • 배포 시 제외 가능
"devDependencies": {
  "typescript": "^5.4.0"
}

 

TypeScript는 거의 항상 -D가 정답

5. TypeScript는 왜 무조건 -D일까?

  • TypeScript는 런타임에 존재하지 않음
  • 컴파일되면 JS만 남음
  • 서버에는 필요 없음
  • CI/CD, 로컬 개발 단계에서만 사용

=> devDependencies가 정확한 위치

 

6. 패키지 버전은 어떻게 관리되나?

기본 설치

npm install axios

 

"axios": "^1.6.7"

 

  • 최신 버전 다운로드
  • ^는 메이저 버전 고정

특정 버전 설치

npm install axios@1.6.0

 

"axios": "1.6.0"

 

버전 기호 정리

1.6.0 정확히 이 버전
^1.6.0 1.x 최신 허용
~1.6.0 1.6.x만 허용
* 전부 허용 (비추)

 

7. 실제 설치된 정확한 버전은 어디에?

=> package-lock.json

  • package.json → 허용 범위
  • package-lock.json → 실제 설치 결과

CI 환경에서는 보통:

npm ci

 

핵심 요약

  • npm은 설치
  • npx는 실행
  • 글로벌 설치는 최소화
  • 프로젝트 단위는 로컬 설치
  • TypeScript는 거의 항상 -D
  • 실제 버전 고정은 package-lock.json

Node 생태계는 처음 보면 복잡해 보이지만,
역할만 분리해서 이해하면 의외로 단순하다.

+ Recent posts