OS 및 기타/Node.js
Node.js 프로젝트의 Dependencies 이해하기
bright jazz music
2024. 12. 22. 13:37
dependencies와 devDependencies의 차이
Node.js 프로젝트의 package.json
에는 두 종류의 의존성이 존재한다:
dependencies
- 프로젝트 실행에 필수적인 패키지
- 실제 운영 환경에서 필요한 패키지들이 포함됨
- 예: express, react, nestjs
# 설치 명령어 npm install 패키지명 # 또는 npm i 패키지명
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
이렇게 하면 최종 프로덕션 이미지에는 실제 운영에 필요한 패키지만 포함되어 이미지 크기를 최적화할 수 있다.