관리 메뉴

bright jazz music

Node.js 프로젝트의 Dependencies 이해하기 본문

OS 및 기타/Node.js

Node.js 프로젝트의 Dependencies 이해하기

bright jazz music 2024. 12. 22. 13:37

dependencies와 devDependencies의 차이

Node.js 프로젝트의 package.json에는 두 종류의 의존성이 존재한다:

  1. dependencies

    • 프로젝트 실행에 필수적인 패키지
    • 실제 운영 환경에서 필요한 패키지들이 포함됨
    • 예: express, react, nestjs
      # 설치 명령어
      npm install 패키지명
      # 또는
      npm i 패키지명
  2. devDependencies

    • 개발 과정에서만 필요한 패키지
    • 테스트, 빌드, 포맷팅 등 개발 보조 도구들이 포함됨
    • 예: jest(테스트), prettier(포맷팅), cross-env(환경변수)
      # 설치 명령어
      npm install -D 패키지명
      # 또는
      npm i -D 패키지명

package.json 예시

{
  "dependencies": {
    "express": "^4.17.1",    // 서버 운영에 필요
    "react": "^17.0.2"       // 앱 실행에 필요
  },
  "devDependencies": {
    "jest": "^27.0.6",       // 테스트용
    "prettier": "^2.3.2",    // 코드 포맷팅용
    "cross-env": "^7.0.3"    // 개발 환경 설정용
  }
}

프로덕션 빌드 시 동작

프로덕션 환경에서는 devDependencies를 제외하고 설치할 수 있다:

# devDependencies 제외하고 설치
npm install --production
# 또는
NODE_ENV=production npm install

Docker에서의 활용 예시

멀티 스테이지 빌드를 통해 최종 이미지 크기를 최적화할 수 있다:

# 빌드 단계: devDependencies 포함 설치
FROM node:18 AS builder
COPY package*.json ./
RUN npm install
# 빌드 작업 수행...

# 프로덕션 단계: devDependencies 제외 설치
FROM node:18
COPY package*.json ./
RUN npm install --production
COPY --from=builder /app/dist ./dist

이렇게 하면 최종 프로덕션 이미지에는 실제 운영에 필요한 패키지만 포함되어 이미지 크기를 최적화할 수 있다.

Comments