Monorepo Tool
Monorepo Tool (Lerna, Nx, Rush, Turborepo)
패키지 매니저 워크스페이스의 기능들 외에 전문적으로 개발하기 위해 필요한 도구 및 기능들 (속도, 분석, 관리 측면)
개발 과정 중 여러 패키지들을 사용할 때 패키지의 코드를 그냥 사용하는 것이 아닌 빌드 과정이 필요하기 때문에 코드를 실행하기 전 매번 빌드를 해주어야하는 번거로움이 있다.
모노리포 툴을 활용한다면, 코드 변경점이 없는 경우 캐싱된 빌드 파일을 사용한다거나 이런 번거로움을 해소해주는 많은 기능들이 포함되어 있다.
리포지토리 내 워크스페이스에 대한 분석과 시각화 기능을 활용하여 전체적인 참조 의존 관계를 파악하기 효과적
스케폴딩이나 코드 공유, 패키지 사용 제한 등의 관리를 수작업이 아닌 도구들을 활용하면 편함
모노레포 도구를 살펴보면서 몰랐던 모노리포의 유용한 기능들을 파악할 수 있다.
Monorepo Tool 제공 기능들
속도
Local computation caching (로컬 캐싱)
Lerna, Nx, Rush, Turborepo
한번 실행된 결과물(빌드)을 캐싱하여 캐싱된 자원을 활용하는 기능
Distribute computation caching (분산 캐싱)
Lerna, Nx, Rush, Turborepo
같은 컴퓨터가 아닌 여러 작업 환경에서 동일한 캐싱된 빌드 자원을 활용하도록 하는 기능
CI 작업할 때 중요
Local task orchestration (로컬 작업 오케스트레이션)
Lerna, Nx, Rush, Turborepo
종속성 이슈로 빌드의 순서를 제어해서 작업의 순서를 나열해야 한다면 병렬적으로 실행할 수 없게 된다.
종속성 이슈가 없는 부분을 병렬적으로 빌드하도록 설정하는 기능을 제공
Distribute task execution (분산 작업)
Lerna, Nx
로컬이 아닌 분산 환경에서 작업을 실행하는 기능을 제공
Detecting affected packages (변경 감지)
Lerna, Nx, Rush, Turborepo
변경 사항에 영향을 받는 항목들만 결정할 수 있는 기능을 제공
특정 패키지의 코드가 수정되면 해당 코드에 영향을 받는 애들만 빌드 또는 테스트를 실행할 수 있게 된다.
분석
Workspace analysis (작업 영역 감지 및 분석)
Lerna, Nx, Rush, Turborepo
별도의 추가 설정 없이
package.json
을 사용해서 워크스페이스의 프로젝트 그래프를 분석할 수 있는 기능
Dependency graph visualization (의존성 그래프 시각화)
Nx, Turborepo
프로젝트 패키지의 종속성 관계를 시각화 해주는 기능
turborepo는 HTML 문서로만 제공하고 Nx는 검색, 필터링 등 인터렉티브 기능을 추가로 제공
관리
Source code sharing (소스 코드 공유)
Lerna, Nx, Rush, Turborepo
개별 소스 코드 조각을 쉽게 공유해주는 기능
기본은 NPM Package만 공유사항
Code generation (스케폴딩)
Nx
package.json
만 있다면 스케폴딩을 생성해주는 기능을 제공
Consistent tooling (일관된 도구)
Nx
일관된 방식으로 여러 도구들을 활용할 수 있는 기능을 제공
Project contraints and visibility (종속성 관계 제한)
Nx, Rush,
리포지토리 내의 종속성 관계를 제한하는 규칙을 설정
Last updated