Peer Dependencies란?

AEHEE·2024년 3월 28일
0

React

목록 보기
17/17
post-thumbnail

현재 pnpm으로 모노레포를 구성중이다.
패키지를 설치하면서 기존에는 생각하지 못했던 부분들을 고민하다가 Peer Dependencies라는 것을 알게 되었다.
공통으로 사용하는 부분은 모노레포에서 packages/common에 작업을 하고 해당 루트에서 install하여 사용하는 방식으로 구성하고 있는데 dependancy 때문에 styled-component를 쓰지 않고 진행하게 되었다. 하지만 css로만 처리하기엔 한계가 있어서 Peer Dependencies를 사용하기로 하였다.

dependencies

프로젝트가 제대로 실행되기 위해 필요한 외부 패키지나 라이브러리 목록을 나타낸다.
dependencies에 명시된 패키지들은 프로젝트가 실행될 때 필요한 것들이다. 그래서 각 의존성은 특정 버전을 지정함으로써, 프로젝트가 항상 동일한 버전의 패키지를 사용하도록 보장하고 안정성과 호환성을 유지하는 데 도음이 된다.
런타임과 빌드타임, 개발중에 이 패키지들이 필요하기에 앱이 빌드 될 때 이 종속성 패키지들이 번들에 포함되어 배포된다.

devDependencies

devDependencies는 개발 시에만 필요한 패키지들을 명시한다. 여기에 포함된 패키지들은 프로덕션 환경에서는 설치되거나 사용되지 않는다.

peerDependencies

peerDependencies는 특정 패키지가 작동하기위해 필요하지만 그 패키지 자체에 직접 포함되지 않는 외부 패키지의 버전을 명시합니다. peer는 동료라는 뜻을 가지고 있다.
이게 모노레포에 왜 필요할까?

패키지의 버전 의존성 때문에 "styled-components": "^6.1.8"를 설치하지 못하고 있었는데 peerDependencies에 설치함으로써 6버전대의 styled-components를 이 패키지가 가지고 있다라고 명시를 해준다.

packages/{공통 컴포넌트}/src/packages.json // peerDependencies
apps/{프로젝트}/src/packages.json // 위 패키지 설치 시 styled-components의 버전이 서로 다른 경우 경고 메세지를 출력한다.

모노레포를 구성하는데에는 깊은 고찰이 필요하다.
의존성을 이렇게 해서라도 가져가는 게 맞는지는 개발하는 본인의 선택에 달려있다.

profile
UI개발자에서 FE개발자로 한걸음 더!

0개의 댓글