🧐
Dependencies vs DevDependencies vs PeerDependencies
2023.10.02
Dependencies (종속성)
-
목적: 애플리케이션이 프로덕션에서 실행되기 위해 필수적
-
설치 방법:
npm install
명령어를 플래그 없이 실행할 때 설치 -
사용 사례: 웹 프레임워크, 유틸리티 라이브러리 등 애플리케이션이 정상적으로 작동하는 데 필요한 패키지를 포함
-
예시
"dependencies": { "express": "4.17.1", "lodash": "4.17.21" }
DevDependencies (개발 종속성)
-
목적: 개발 및 테스트에만 필요
-
설치 방법:
npm install --save-dev
또는npm install -D
명령어를 실행할 때 설치 -
사용 사례: 테스트 라이브러리, 빌드 도구, 린터 등 프로덕션 환경에서는 필요하지 않은 패키지를 포함
-
예시
"devDependencies": { "jest": "26.6.3", "eslint": "7.20.0" }
PeerDependencies (피어 종속성)
-
목적: 패키지를 사용하는 소비자가 특정 종속성을 제공해야 함을 명시
-
설치 방법: 자동으로 설치되지 않으며, 패키지를 사용하는 프로젝트에서 설치
-
사용 사례: 플러그인이나 라이브러리가 호스트 애플리케이션이 특정 버전의 종속성을 사용하도록 보장할 때 유용하며, 여러 버전의 동일한 패키지가 사용되는 것을 피할 수 있다.
-
예시
"peerDependencies": { "react": "17.0.0", "react-dom": "17.0.0" }
요약
- Dependencies: 런타임에 필수적이며, 프로덕션 환경에서도 포함한다. 또한 모든 환경에서 애플리케이션이 예상대로 실행되도록 필요한 모든 패키지가 제공된다.
- DevDependencies: 개발 중에만 필요하며, 프로덕션 환경에서는 포함되지 않는다. 또한 프로덕션 번들에서 개발 관련 도구를 제외하여 성능을 개선하고 잠재적 공격 벡터를 줄일 수 있다.
- PeerDependencies: 패키지를 사용하는 프로젝트가 제공해야 하는 종속성으로, 기본적으로 설치하지 않는다. 그리고 소비하는 애플리케이션 전반에 걸쳐 단일 버전의 종속성을 유지하여 여러 버전으로 인한 충돌과 잠재적 버그를 피할 수 있다.