frontend/개발환경

monorepo와 yarn workspace 소개

장구루애비 2021. 12. 13. 10:17

Mono repository

여러 패키지를 포함하는 단일 저장소를 의미.

저장소 내에 로컬 패키지들은 필요에 따라서 특정 패키지에 의존하거나 공유될 수 있음.

 

Poly repository

monorepo와는 반대되는 개념으로 하나의 저장소에 하나의 단일 기능에만 초점을 맞춰 관리됨.

하나의 저장소가 의존하는 패키지들은 모두 원격 저장소에 있음.

 

yarn workspace

yarn 공식문서를 보면 yarn workspace에 대해서 간단 명료하게 잘 설명해주고 있다.

Yarn 작업 공간은 모노레포 작업을 쉽게 하고 의 주요 사용 사례 중 하나를 yarn link보다 선언적인 방식으로 해결 하는 것을 목표로 합니다. 요컨대, 여러 프로젝트가 동일한 저장소에서 함께 살 수 있고 서로를 상호 참조할 수 있습니다. 즉, 소스 코드에 대한 수정 사항은 즉시 다른 프로젝트에 적용됩니다

 

yarn workspace를 구성하여 babel, jest 와 같은 monorepo 프로젝트를 만들려면 아래 페이지 참조

monorepo 프로젝트 시작하기

 

monorepo 프로젝트 시작하기

monorepo를 프로젝트를 구성하는 가장 쉬운 방법은 yarn workspace를 이용하는 것이다. npm 또한 버전7 부터 지원한다고 알고 있으나 아직 구성해보진 않았다. 관심 있다면 글 하단의 링크를 참조! yarn wo

janggulu.tistory.com

 

참고

yarn1.0 공식문서.

Yarn

 

Yarn

Fast, reliable, and secure dependency management.

classic.yarnpkg.com

 

yarn2.0 공식문서. (yarn 1.x 버전과는 상당히 다른 양상을 보인다. yarn 버전 선택에는 주의 필요.)

Workspaces

 

Workspaces

An in-depth guide to Yarn's workspaces, a feature that provides an easy way to store multiple packages inside the same project.

yarnpkg.com

 

아래는 yarn workspace 를 이용한 monorepo 구성에 대해 잘 설명한 글

Lerna와 yarn-workspace를 활용한 Mono Repo (Typescript & Jest) 환경 구성하기

 

Lerna와 yarn-workspace를 활용한 Mono Repo (Typescript & Jest) 환경 구성하기

보통 하나의 도메인 시스템을 운영할때 프로젝트 하나만으로는 해결이 안될 때가 많습니다. 이를테면 다음과 같은 경우인데요. 어떤 분은 이걸 보고 MSA 라고 하시기도 하는데요. API / Admin / Batch

jojoldu.tistory.com

 

다음은 monorepo의 장점과 단점에 대해 잘 정리된 위키

Monorepo - Wikipedia

 

Monorepo - Wikipedia

In version control systems, a monorepo ("mono" meaning 'single' and "repo" being short for 'repository') is a software development strategy where code for many projects is stored in the same repository. As of 2017[update], various forms of this software en

en.wikipedia.org