모노레포

이대현·2024년 6월 20일
0

Javascript

목록 보기
4/4

모노레포:
전 회사에서 여러개의 서비스를 서비스별로 각각의 레포에서 관리하고 있었는데
각 프로젝트별로 공통컴포넌트나 린트 환경이 달랐고 따로 개발이 되다보니 히스토리도 달라지고 컨벤션도 달라져서 유지보수하기가 어려워졌음

그래서 린트나 공통 컴포넌트들을 같이 관리하고자 관련 관련 기술 스택을 사용하는 프로젝트들끼리 묶어서 모노레포를 구성하였음

패키지 매니저
pnpm을 사용한 이유:

  • 효율적인 디스크 사용: 저장소 루트에 중앙화된 node_modules폴더를 사용하여 패키지를 설치하기 때문에 동일한 버전의 패키지를 중복으로 설치하지 않고 심볼릭 링크를 사용해서 디스크 공간을 줄인다.
  • 기존에 사용하던 npm과 node_modules로 패키지를 관리하는게 더 익숙했음

++ yarn berry plug'n'play

npm, yarn을 사용하면 node_modules의 의존성이 깊어지는데 이를 호이스팅하게되면 실제로 package.json에 없어서 사용하지 않아도 node_modules에 있는 경우가 있을 수 있음
이런 비효율적인 방식을 해결하고자 만든게 PnP방식임

yarn berry에서는 node_modules에 패키지를 저장하지않고 .yarn/cache 폴더에 해당 의존성이 압축파일로 저장되고 .pnp.js 파일에 의존성을 찾을수 있는 정보가 기록됨
.pnp.js파일에 명시된 정보로 패키지들을 동적으로 참조하여 속도도 증가함
.yarn 폴더를 원격저장소에 올리기때문에 zero-install이 가능하다

하지만 커밋을 하면 git/object에 변경된 파일이 기록되고 이러한 부분이 추가적인 관리 포인트가 될수 있음
추가로 가끔씩 잘못된 의존성을 참조할 수 있다는 등 단점들이 있음

profile
Frontend Developer

0개의 댓글