모노레포가 모노? - 모노레포 사용기
최근에 모노레포를 이용해 여러 상태관리 라이브러리 카운터를 만들어 보고 사용 경험과 느낀점을 이야기 해보려고 한다
그전에 먼저 모노레포가 뭔지 간단하게 알아보겠다
모노레포는 여러개의 프로젝트를 한개의 레포지토리에서 관리하는 방법이다
기존의 방식은 monolith 방식으로 한개의 프로젝트를 하나의 레포지토리로 관리하는 것이다
그에 반해 momorepo 방식은 여러개의 프로젝트를 하나의 레포지토리에서 관리한다
monorepo의 장점
- 코드 공유
- 의존성 관리
이제부터 내가 모노레포를 구축하면서 어떤것들을 느꼈는지를 말해보겠다
느낀점을 말하기 전에 원래 나는 yarn workspace를 사용해 모노레포를 구축했지만 패키지를 공유하는 기능을 구축하다가 에러가
발생하였는데 관련 에러를 검색해도 국내에 모노레포 관련 글이 잘 없고 또 yarn 1 버전은 앞으로 업데이트를 하지 않는다고 하여
pnpm으로 갈아탔다 pnpm을 선택한 이유는 학교 선배님들이 pnpm으로 모노레포 구축하는 방법을 글로 많이 써놓으셔서 내가 구축하는데 많은 도움을 받을수 있어서 pnpm을 선택하였다!
1. 의존성 관리
기존의 monolith 방식으로 같은 의존성을 사용하는 여러개의 프로젝트를 관리하면 매번 같은 의존성을 반복적으로 설치 해줘야 했다
하지만 monorepo는 root dependency에 설치를 해주면 하위 프로젝트에는 따로 의존성을 설치해줄 필요가 없어서 편하게 의존성 관리를 할 수 있었다
pnpm에서 root dependency에 설치하는 방법은 -w
키워드로 root dependency에 설치 할 수 있다
pnpm add <dependency name> -W
그리고 각 프로젝트에 의존성을 설치 할수도 있다
pnpm --filter <project name> add <dependency name>
2. 코드 공유
monorepo에서는 프로젝트간 코드(컴포넌트, 변수등)를 공유 가능해 쓸때없이 각 프로젝트에서 똑같은 코드를 반복해 작성할 필요가 없다!
A라는 프로젝트에 B 프로젝트의 코드를 공유하고 싶다면 아래와 같이 해주면 된다
pnpm --filter A add B --workspace
마무리
사실 모노레포로 공통 config 설정을 해줄수도 있는데 아직 해보지 못하고 간단한것들만 해보았다 나중에 공통 config 세팅도 해서 블로그에 추가해 보겠다 하지만 공통 config 세팅을 제외하더라도 의존성관리, 코드 공유 기능을 사용해봤는데 여러 프로젝트를 관리할때 너무 편했다 다음에 모노레포로 프로젝트를 관리하게 된다면 직접 구축해보고 싶다