QUESTION #0240
프론트엔드

dependency, devDependency, peerDependency에 대해서 설명해주세요.

dependency, devDependency, peerDependency에 대해서 설명해주세요.

분야: 프론트엔드


dependency, devDependency, peerDependency는 모두 npm에서 사용되는 의존성의 유형에 해당합니다.

먼저 dependency프로덕션 환경에서도 필요한 패키지를 의미합니다. 예를 들어, react를 사용하는 프로젝트라면 react 패키지는 실행에 필수적이므로 dependencies에 포함됩니다. 이 의존성은 배포 환경에서도 설치되며, 애플리케이션이 동작하는 데 직접적인 영향을 미칩니다.

반면 devDependency개발 과정에서만 필요한 패키지를 의미합니다. 예를 들어, eslint, jest, webpack 같은 도구들은 코드 품질 검증이나 테스트, 번들링을 위해 사용되지만, 실제 서비스 운영에는 필요하지 않습니다. 따라서 devDependencies에 포함하여 프로덕션 환경에서 설치되지 않도록 합니다.

마지막으로 peerDependency호환성을 위해 특정 버전의 다른 패키지를 필요로 한다는 사실을 명시합니다. 이 의존성은 보통 라이브러리를 개발할 때 중요하며, 해당 패키지가 특정 버전의 다른 패키지를 사용해야 할 경우 지정합니다. 이를 통해 호환성 문제를 줄이면서도 동일한 패키지가 여러 번 설치되는 문제를 방지할 수 있습니다.

dependencies와 devDependencies를 잘못 설정하면 어떤 문제가 발생할 수 있을까요? 🤔

불필요한 패키지가 프로덕션 환경에 포함되는 문제가 발생합니다. 예를 들어, devDependencies에 추가해야 할 webpack 같은 패키지를 dependencies에 추가하면 배포된 애플리케이션 크기가 불필요하게 커질 수 있습니다. 이는 배포 속도 저하나 서버 부하 증가의 원인이 될 수 있습니다. 또한, 불필요한 패키지를 포함하면 보안 취약점이 늘어나게 됩니다.

반대로, dependencies에 있어야 할 패키지를 devDependencies에 잘못 넣으면, 실제 운영 환경에서 해당 패키지가 누락되어 애플리케이션이 정상적으로 실행되지 않을 수 있습니다.

📚 추가 학습 자료를 공유합니다.