[공지사항] 푸샤 깃허브 블로그 업데이트 사항

모노레포(mono-repo)란?

단일을 의미하는 mono와 Repository가 합쳐진 단어로, 여러 가지의 멀티 레포(multi-repo)에 반대되는 개념으로서 하나의 저장소에 여러 프로젝트 및 패키지를 가진 것을 의미한다.

모노레포의 장점

  • 여러 패키지에서 하나의 설정을 공유할 수 있다.

: 예를 들어, Eslint나 Prettier 등 설정을 루트 레벨에서 관리할 수 있기 때문에 여러 Repository에서 각각 따로 관리하던 설정을 공유할 수 있다.

  • 패키지(package) 버전 통합 및 의존성 해결

: 멀티 레포에서 A라는 Repo는 babel 패키지 x.x.1 버전을 사용하고 B라는 Repo에서 x.x.2 babel 패키지를 사용하고 있다면 추후에 다른 버전으로 인한 이슈가 생길 수 있는데, 모노 레포에서는 root에서 모든 npm을 관리해서 버전을 통합시킬 수 있다. 이렇게 하면 여러 Repo에서 중복설치하지 않고 root 폴더에서 관리하여 훨씬 패키지 관리에 용이하다.

  • 코드의 재사용

: 여러 레포에서 간혹 공통으로 사용하는 코드들이 있을 수 있다. 타입스크립트를 예를 들면, enum이나 type에 대한 코드가 중복될 수 있는데 이를 중복되지 않게 모노레포에서 여러 Repo의 공통의 코드를 하나로 관리할 수 있다.

모노 레포 툴

  1. Yarn Workspaces : root package.json 파일에서 설정한 하위 폴더에 있는 여러 package.json 파일에 있는 종속성을 한번에 설치할 수 있게 해줍니다.

  2. Rush : 마이크로소프트에서 만든 웹을 위한 확장 가능한 모노레포 관리 툴입니다.

  3. Lerna : 자바스크립트 프로젝트들을 여러 패키지로 관리하기 위한 도구로 단일 저장소에서 여러 npm 패키지를 관리하는 도구입니다.

이 외에도 여러가지 툴들이 있으며, 조합해서 사용할 수도 있다. 개인적으로는 프로젝트에서 yarn을 패키지 매니저로 사용하고 있었기 때문에 Yarn Workspace에서 사용하였으며, 사용법은 아래의 유튜브 영상 참조하였다.

요약

  • 여러 Repo을 통합하여 관리하고 싶다면 모노레포를 적극 고려해본다
  • 모노레포를 사용하여 여러 Repo에서 중복하여 사용하고 있는 Eslint나 코드, 패키지를 Root에서 통합 관리하여 수월하다.

참고 영상

참조 문서 및 사이트

상단으로 푸샤 깃허브 이동

댓글남기기