Ledger Live Monorepo 프로젝트: 2부 - 도구(Make it Shine) | 원장

Ledger Live Monorepo 프로젝트: 2부 – 도구(빛나게 만들기) | 원장

소스 노드 : 2985172

블로그 게시물 시리즈 "Ledger Live Monorepo Project"의 두 번째 항목에서는 Ledger 개발자가 Ledger Live 코드베이스를 모노 저장소로 대규모로 마이그레이션한 이야기를 들려줍니다. 1부를 놓친 경우 여기에서 확인하세요.

모노레포 아키텍처가 실행 가능한 솔루션이라는 것을 확인한 후 우리는 계획을 실행하는 데 사용할 수 있는 도구를 조사하기 시작했습니다.

여러 프로젝트 처리

Ledger Live 팀에서는 JavaScript 생태계를 탐색하며, 다행히도 패키지 관리자를 사용하여 여러 프로젝트를 처리하는 여러 가지 방법을 이미 알고 있었습니다. 가능한 솔루션 중 일부는 다음과 같습니다.

  • NPM (작업 공간을 지원하지만 더 나은 대안이 있음)
  • 원사 1 (너무 오래되고 더 좋고 더 효율적인 대안이 됨)
  • 원사 ≥ 2 (흥미로운 아이디어이지만 플러그 앤 플레이는 모든 곳에서 잘 지원되지 않습니다. 특히 React Native의 경우),
  • PNPM (작업 공간을 염두에 두고 구축된 심볼릭 링크, 디스크 효율성)

이것저것 살펴 본 후 우리는 함께 가기로 결정했습니다. PNPM 용 :

  • 디스크 효율성(가상 저장심볼릭 링크, 따라서 패키지는 한 번만 다운로드된 후 가상 저장소에서 node_modules에 심볼릭 링크됩니다.
  • 속도(패키지가 캐시되므로 후속 설치가 훨씬 빠릅니다)
  • 작업 공간/모노레포 아키텍처(별칭, 오케스트레이션 등)에 대한 지원이 내장되어 있습니다.

종이에 PNPM 는 절대적인 보석이지만 심볼릭 링크는 올바르게 설정하기가 약간 이상했습니다(특히 React Native의 경우).

좋아, 그래서 우리는 선택을 했고, PNPM.

스크립트 오케스트레이션

... 비록 ... 할지라도 PNPM 기능에 점점 더 많은 오케스트레이션을 추가하지만 여전히 다음과 같이 우리가 원하는 모든 것을 다루지는 않습니다.

  • 순차 빌드,
  • 캐싱.

이를 위해 우리는 살펴봐야 할 두 가지 흥미로운 경쟁자를 발견했습니다.

  • NX (Angular 팀에서)
  • 터보레포 (우리가 작업을 시작했을 때 v1.0.0을 발표했고 지금은 Vercel 팀과 협력하고 있습니다).

우리는 두 가지 모두에 대한 개념 증명을 수행했습니다.

NX 훨씬 더 많은 기능, 생성기, 자동화, 뛰어난 종속성 그래프 등이 있었지만 오버헤드가 많이 추가되었고 꽤 독선적이므로 해당 규칙을 따라야 합니다.

터보레포 반면에, 꽤 기본적인 기능입니다. 그러나 필요할 경우 매우 빠르게 변경할 수 있는 편리한 플러그 앤 플레이 솔루션입니다.

... 비록 ... 할지라도 터보레포 것보다 기능이 적었습니다. NX, 우리가 찾고 있던 두 가지 작업을 수행했습니다.

  • 종속성 트리(및 동시 빌드)를 고려한 빌드 조정
  • 캐싱(코드가 변경되지 않은 경우 빌드가 캐시되고 '재생'됩니다).

게다가 쉬운 드롭인/드롭아웃 기능 덕분에 우리는 이 블록에서 새로운 아이를 선택하게 되었습니다. 터보레포.

버전 관리

우리도 여러 가지 솔루션을 검토했지만 결국에는 다음을 사용하기로 결정했습니다. https://github.com/changesets/changesets 이는 TurboRepo가 권장하는 도구 중 하나였으며 약간의 문서를 읽은 후에 우리의 요구 사항을 충족하는 것 같았습니다.

개발자는 개발 흐름을 좀 더 엄격하게 하고 다음을 제공해야 합니다. changesets (코드가 변경되는 라이브러리, 심각도를 설명하는 파일) Semver 규칙 및 변경 사항에 대한 설명). 이것들 changesets 그런 다음 주어진 심각도를 고려하여 패키지 버전을 자동으로 조정하고 생성을 자동화하는 데 사용됩니다. 변경 내역. 게다가 도구를 사용하면 다음과 같은 작업을 수행할 수 있습니다. pre release 모드에서는 🍰에 🍒가 표시됩니다.

무엇 향후 계획 ?

도구를 결정한 후 작업을 시작할 시간이었습니다. 다음 블로그 기사에서는 모노 저장소의 맥락에서 빌드 시스템과 모든 개발/자동화/지속적 통합에 대해 설명하겠습니다.


발렌틴 드 알메이다
개발자 경험 및 핵심 기술 – Ledger Live

타임 스탬프 :

더보기 원장