dependency

❓질문

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


💡 조사하기전 내가 알고 있던 내용

셋다 패키지 매니저에서 어떠한 패키지를 의존할지를 명시할때 사용하는 유형을 나타내는 것입니다.

먼저 dependency는 개발 그리고 프로덕션 단계에서도 이 패키지를 사용하겠다는 뜻입니다. 예를들어 axios 라이브러리를 사용한다고치면 이 axios에 대한 의존을 프로덕션단계에서 끊어버린다면 정상적으로 api호출이 어려울것입니다.

두번째로는 devDependency입니다 이 유형은 개발에서만 이 패키지를 사용하겠다는 뜻입니다. 예를 들어 @tanstack/react-query-devtools를 예로 들 수 있을것같습니다 tanstack query는 api 통신후 캐싱전략을 도와주는 라이브러리입니다 그리고 예로든 devtools에는 api통신후 이게 프레시한 정보인지 캐싱은 어떻게 되고있는지 정상적으로 호출됐는지 개발자에게 편리함을 주는 라이브러리입니다.

그러나 이런 개발에만 유용한 라이브러리를 굳이 프로덕션단계에 들고가게된다면 사용자에게 불필요한 정보를 노출할 수도 있고 용량만 차지하게 되니 어플리케이션은 상대적으로 느려질것입니다, 이러한 라이브러리들은 devDependency에 넣게되면 빌드때 해당 패키지는 따로 import해서 사용하지않는 다면 제외되어 빌드됩니다.

마지막 peerDependency에 대해서는 잘 모르겠습니다.


🏫 정리한 내용

마지막 peerDependency는 호환성을 위해 특정 버전의 다른 패키지를 필요로 한다는 사실을 명시합니다.

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