블로그 게시물 시리즈 "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 훨씬 더 많은 기능, 생성기, 자동화, 뛰어난 종속성 그래프 등이 있었지만 오버헤드가 많이 추가되었고 꽤 독선적이므로 해당 규칙을 따라야 합니다.
터보레포 반면에, 꽤 기본적인 기능입니다. 그러나 필요할 경우 매우 빠르게 변경할 수 있는 편리한 플러그 앤 플레이 솔루션입니다.
... 비록 ... 할지라도 터보레포 것보다 기능이 적었습니다. NX, 우리가 찾고 있던 두 가지 작업을 수행했습니다.
- 종속성 트리(및 동시 빌드)를 고려한 빌드 조정
- 캐싱(코드가 변경되지 않은 경우 빌드가 캐시되고 '재생'됩니다).
게다가 쉬운 드롭인/드롭아웃 기능 덕분에 우리는 이 블록에서 새로운 아이를 선택하게 되었습니다. 터보레포.
버전 관리
우리도 여러 가지 솔루션을 검토했지만 결국에는 다음을 사용하기로 결정했습니다. https://github.com/changesets/changesets 이는 TurboRepo가 권장하는 도구 중 하나였으며 약간의 문서를 읽은 후에 우리의 요구 사항을 충족하는 것 같았습니다.
개발자는 개발 흐름을 좀 더 엄격하게 하고 다음을 제공해야 합니다. changesets
(코드가 변경되는 라이브러리, 심각도를 설명하는 파일) Semver 규칙 및 변경 사항에 대한 설명). 이것들 changesets
그런 다음 주어진 심각도를 고려하여 패키지 버전을 자동으로 조정하고 생성을 자동화하는 데 사용됩니다. 변경 내역. 게다가 도구를 사용하면 다음과 같은 작업을 수행할 수 있습니다. pre release
모드에서는 🍰에 🍒가 표시됩니다.
무엇 향후 계획 ?
도구를 결정한 후 작업을 시작할 시간이었습니다. 다음 블로그 기사에서는 모노 저장소의 맥락에서 빌드 시스템과 모든 개발/자동화/지속적 통합에 대해 설명하겠습니다.
발렌틴 드 알메이다
개발자 경험 및 핵심 기술 – Ledger Live
- SEO 기반 콘텐츠 및 PR 배포. 오늘 증폭하십시오.
- PlatoData.Network 수직 생성 Ai. 자신에게 권한을 부여하십시오. 여기에서 액세스하십시오.
- PlatoAiStream. 웹3 인텔리전스. 지식 증폭. 여기에서 액세스하십시오.
- 플라톤ESG. 탄소, 클린테크, 에너지, 환경, 태양광, 폐기물 관리. 여기에서 액세스하십시오.
- PlatoHealth. 생명 공학 및 임상 시험 인텔리전스. 여기에서 액세스하십시오.
- 출처: https://www.ledger.com/blog/ledger-live-monorepo-project-part-2-the-tools-make-it-shine
- :있다
- :이다
- :아니
- :어디
- 1
- a
- 소개
- 절대
- 추가
- 추가
- 후
- 다시
- All
- 수
- 이미
- 대안
- an
- 및
- 모난
- 발표
- 아키텍처
- 있군요
- 기사
- AS
- At
- 자동화
- 자동적으로
- 자동화
- 가능
- 기본
- BE
- 되고
- 더 나은
- 비트
- 블록
- 블로그
- 블로그 게시물
- 두
- 빌드
- 빌드
- 내장
- 비자 면제 프로그램에 해당하는 국가의 시민권을 가지고 있지만
- by
- 이전 단계로 돌아가기
- 변경
- 변경
- 검사
- 선택
- 왼쪽 메뉴에서
- 암호
- 코드베이스
- 제공
- 준수
- 개념
- 병발 사정
- 문맥
- 끊임없는
- 편리한
- 컨벤션
- 협약
- 핵심
- 바르게
- 수
- 엄호
- 결정된
- 결정
- 의존
- 설명
- 설명
- 데브
- 개발자
- DID
- do
- 선적 서류 비치
- 하지 않습니다
- 드롭
- 쉽게
- 생태계
- 효율성
- 효율적인
- 항목
- 특히
- 설립
- 에테르 (ETH)
- EVER
- 모두
- 모든 곳
- 경험
- 빠른
- 특색
- 특징
- 입양 부모로서의 귀하의 적합성을 결정하기 위해 미국 이민국에
- 흐름
- 따라
- 수행원
- 럭셔리
- 다행히도
- 발견
- 에
- 보석
- 세대
- 발전기
- 주어진
- Go
- 그래프
- 큰
- 했다
- 손
- 핸들
- 있다
- 여기에서 지금 확인해 보세요.
- HTTPS
- 거대한
- 생각
- if
- in
- 포함
- 완성
- 흥미있는
- 으로
- IT
- 그
- 자바 스크립트
- 다만
- 아이
- 원장
- 원장 라이브
- 적게
- 도서관
- 살고있다
- 보기
- 보고
- 찾고
- 롯
- 만든
- 확인
- 매니저
- 최대 폭
- 이주
- 신경
- 놓친
- 모드
- 배우기
- 보다 효율적으로
- 많은
- 여러
- 출신
- 이동
- 필요
- 필요
- 요구
- 신제품
- 다음 것
- 지금
- of
- 낡은
- on
- 일단
- ONE
- 만
- 의견
- 오케스트레이션
- 기타
- 우리의
- 아웃
- 꾸러미
- 패키지
- 서
- 부품
- 장소
- 계획
- 플라톤
- 플라톤 데이터 인텔리전스
- 플라토데이터
- 연극
- 플러그
- 플러그 앤 플레이
- ...을 더한
- 가능한
- 게시물
- 예쁜
- 프로젝트
- 프로젝트
- 증명
- 개념 증명
- 제공
- 놓다
- 빨리
- 반응
- 네이티브 반응
- 읽기
- 추천
- 저장소
- 존중
- 엄밀한
- ~ 같았다
- 연속
- 설치
- 몇몇의
- 엄격
- 빛나다
- 이후
- So
- 해결책
- 솔루션
- 일부
- 특별히
- 속도
- 스타트
- 시작
- 아직도
- 저장
- 이야기
- 후속의
- 이러한
- SUPPORT
- 지원
- 체계
- 받아
- 이야기
- 팀
- 기술
- 말하다
- 보다
- 그
- XNUMXD덴탈의
- 블록
- 그들의
- 그때
- Bowman의
- 일
- 그
- 그래도?
- 시간
- 에
- 너무
- 수단
- 검색을
- 상단
- 나무
- 두
- 궁극적으로
- us
- 익숙한
- 사용
- v1
- 버전
- 대단히
- 존립 할 수있는
- 온라인
- 원
- 였다
- 방법
- we
- 잘
- 했다
- 언제
- 어느
- 의지
- WISE
- 과
- 일하는
- 겠지
- 아직
- 당신
- 너의
- 제퍼 넷