hooninedev.com
🧐
소박한궁금증자바스크립트

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: 패키지를 사용하는 프로젝트가 제공해야 하는 종속성으로, 기본적으로 설치하지 않는다. 그리고 소비하는 애플리케이션 전반에 걸쳐 단일 버전의 종속성을 유지하여 여러 버전으로 인한 충돌과 잠재적 버그를 피할 수 있다.

© Powered by hoonine