모노레포란? (Monorepo)

Jean Young Park·2024년 2월 19일
0

기타

목록 보기
4/4

새로운 사이드 프로젝트를 시작하면서 처음 알게 된 모노레포이다.
사용 방법은 어렵지 않은것 같지만 한번 정리해본다.

Monorepo란

모노레포(Monorepo)는 여러 개의 프로젝트를 단일 저장소에 포함시키는 방식을 의미한다. 이는 소프트웨어 개발 및 관리를 단순화하고 개발자들 간의 협업을 용이하게 만들어준다.

리액트에서 모노레포를 구성할 때는 주로 Yarn 또는 npm과 함께 Lerna 또는 Yarn Workspaces와 같은 도구를 사용한다.

특징

  1. 코드 공유
    여러 프로젝트 간에 코드를 공유할 수 있다. 이는 중복 코드를 중리고 유지 보수성을 향상시킨다.

  2. 의존성 관리
    모든 프로젝트가 동일한 저장소에 있기 때문에 의존성을 관리하기가 더 쉽다. 버전 충돌 및 호환성 문제를 줄일 수 있다.

  3. 통합 및 배포
    단일 저장소에서 모든 프로젝트를 관리하기 때문에 통합 및 배포 프로세스를 단순화 할 수 있다.

  4. 공통 리소스
    공통 컴포넌트, 라이브러리 및 도구를 사용할 수 있다. 이는 일관된 UI/UX를 유지하고 개발 생산성을 높이는 데 도움이 된다.

  5. 테스트 및 개발 환경
    통합된 테스트 및 개발 환경을 설정할 수 있다. 이는 개발자들이 통합된 환경에서 작업하여 개발 및 테스트를 효율적으로 수행할 수 있도록 도와준다.

예시

my-monorepo/
  packages/
    package1/
      src/
      package.json
    package2/
      src/
      package.json
  package.json
  yarn.lock

여기서 packages/디렉토리는 모노레포의 모든 프로젝트를 포함한다. 각 프로젝트는 별도의 디렉토리로 구분되어 있다.
아래는 최상위 package.json파일이다.

{
  "name": "my-monorepo",
  "version": "1.0.0",
  "private": true,
  "workspaces": [
    "packages/*"
  ],
  "scripts": {
    "start": "echo 'Start script for the entire monorepo'",
    "build": "echo 'Build script for the entire monorepo'"
  }
}
  • name : 모노레포의 이름을 지정한다.
  • version: 모노레포의 버전을 지정한다.
  • private: 개인적인 프로젝트인지 여부를 나타낸다. true로 설정되면, npm 레지스트리에 배포할 수 없다.
  • workspaces: Yarn Workspaces나 Lerna와 같은 도구가 사용하는 설정으로, 모노레포 내의 모든 패키지가 있는 디렉토리를 지정한다.
  • scripts: 모노레포 전체에 대한 스크립트를 정의한다.

0개의 댓글