모노레포:
전 회사에서 여러개의 서비스를 서비스별로 각각의 레포에서 관리하고 있었는데
각 프로젝트별로 공통컴포넌트나 린트 환경이 달랐고 따로 개발이 되다보니 히스토리도 달라지고 컨벤션도 달라져서 유지보수하기가 어려워졌음
그래서 린트나 공통 컴포넌트들을 같이 관리하고자 관련 관련 기술 스택을 사용하는 프로젝트들끼리 묶어서 모노레포를 구성하였음
패키지 매니저
pnpm을 사용한 이유:
++ 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에 변경된 파일이 기록되고 이러한 부분이 추가적인 관리 포인트가 될수 있음
추가로 가끔씩 잘못된 의존성을 참조할 수 있다는 등 단점들이 있음