모노레포(mono-repo)와 러나(lerna)

김태현·2020년 12월 24일
3

ETC

목록 보기
2/15
post-thumbnail

안녕하세요 블로그 독자 여러분
저는 현재 위티라는 기업에 기업협업을 진행중이에요
여기선 프로젝트를 진행할 때 모노레포와 lerna 라는 걸 사용하는데 이에 대해서 간단하게 설명해보려고 합니다

모노레포(mono-repo)가 모징...

모노(mono)는 단일을 의미하고, 레포(repo)는 우리가 git에서 자주썼던 레파지토리(repository)를 의미합니다
따라서 모노레포란 멀티레포(multi-repo)에 반대되는 개념으로서 하나의 저장소에 여러 프로젝트, 패키지를 가진것을 말하지요

모노레포를 왜 쓸까요

모노레포는 다음과 같은 장점들이 있기 때문에 씁니다

  1. 여러 패키지에서 하나의 설정을 공유할 수 있다
  • 모노레포를 사용하면 ESLint 나 Prettier, Babel 등의 설정을 루트 레벨에서 할 수 있어 여러 패키지에서 하나의 설정을 공유하는것이 가능하게 됩니다
  1. 코드의 재사용
  • 여러 레포지토리에서 프로젝트를 진행하면 비슷한 로직이 각 레포지토리에 중복 구현이 되는데 이때 공통 로직을 다시 작성하지 않고 공유하려면 레파지토리를 추가하고 이에 대한 의존성을 추가해주어야 합니다
    모노레포는 이러한 의존성 추가를 lerna 라는 모노레포 관리 툴을 사용하여 간단하게 쉽게 할 수 있습니다
  1. 여러 패키지에서의 변경사항을 하나의 커밋과 PR로 제출할 수 있다

  2. 모든 구성원들이 모든 코드에 접근할 수 있다

  • 협업에 있어서 상당히 자유로워집니다

러나(lerna)는 또 모징...

러나는 단일 저장소에서 다양한 패키지 구성을 도와주는 라이브러리 입니다.
코딩을 하다보면 워낙 까는것도 많고 구조도 복잡해서 패키지가 꼬일때가 많은데 그럴 때마다 요 녀석이 아주 유용하게 쓰입니다.

lerna에는 init, run, diff 등 다양한 명령이 있는데 그 중에서 제가 써본것은 lerna clean 이라는 명령입니다.
터미널에 yarn lerna clean을 하게되면 각 패키지들의 node_modules 폴더들이 전부 삭제됩니다(다만 맨 위의 루트 디렉터리의 node_moduels는 삭제되지 않음!)
각 패키지들을 돌아다니면서 node_modules들을 일일히 삭제하지 않아도 명령 하나에 전부 삭제를 할 수 있게되는 거지요
그리고 이렇게 node_moduels를 전부 날리고 yarn install을 다시하게 되면... module not found 라는 악의무리가 종적을 감추게 되지요!

오늘은 여기까지
다음 시간에 또 만나요 ~

참고: https://class101.dev/ko/blog/2019/07/12/tony/
참고: https://medium.com/jung-han/lerna-%EB%A1%9C-%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%ED%95%B4%EB%B3%B4%EB%9F%AC%EB%82%98-34c8e008106a

profile
프론트엔드 개발자

0개의 댓글