Monorepo 관리를 위해 Lerna에서 Turbo로 마이그레이션하는 방법.

이 읽기는 Lerna 설정에 대한 컨텍스트를 갖는 것이 좋습니다. 그렇지 않으면 설정에 대해 너무 많이 설명하지 않기 때문에 약간 혼란스러울 수 있습니다.

아시다시피 Lerna는 더 이상 사용되지 않으므로 Lerna의 기반을 대체하는 데 도움이 될 수 있는 유틸리티를 찾아야 했습니다. 선택한 유틸리티는 Turbo였습니다.






토마스 두친 🇺🇦


@tomasz_ducin






Lerna는 이제 공식적으로 죽은 프로젝트입니다. github.com/lerna/lerna


오후 22:00 - 2022년 4월 27일











TLDR



우선 우리는 Monorepo 관리를 위해 실제로 존재하는 다양하고 인기 있는 도구를 비교하는 데 도움이 되는 이 기사를 읽었습니다.

https://monorepo.tools/

다음과 같은 기본적인 이유로 Turbo로 전환했습니다.
  • 우리는 Next.js로 마이그레이션하고 있습니다. 모르는 경우 Vercel이 두 도구의 소유자이므로 이러한 방식으로 Turbo를 선택하면 사용되는 도구와 일치하는 느낌을 받을 수 있다고 느꼈습니다.
  • 설명서에 따르면 마이그레이션이 쉬워 보였습니다.

  • 이것은 우리가 먼저 시도하기에 충분했습니다. 다른 것을 먼저 시도하는 것을 주저하지 마십시오.


    Lerna 컨텍스트



    시작하려면 프로젝트를 구성한 방법과 MonoRepo 관리에 프로젝트를 사용한 방법을 알려야 합니다.

    Lerna 사용 방법:
  • 로컬 및 CI 모두에 대해 전역적으로 설치했습니다.
  • dev 모드에서 devtime에 패키지를 빌드하고 완료되면 dev 모드에서 앱을 시작합니다.
  • 우리는 ci 시간에 "패키지"를 구축하고 완료되면 앱을 구축합니다.
  • 비공개 패키지에는 아무것도 넣지 않습니다.

  • 프로젝트 구조:

    apps/
    ../app-a
    ../app-b
    
    packages/
    ../package-a
    ../package-b
    
    lerna.json
    package.json
    


    Lerna와 함께 사용되는 명령:

    # Bootstrap workspaces
    lerna bootstrap
    
    # Link lerna repos
    lerna link
    
    # Build the packages workspaces
    lerna run build --scope="@company/package-a" --scope="@company/package-b"
    
    # Build the project workspaces
    lerna run build --scope="@company/project-a"
    
    # Build the project workspaces
    lerna run build --scope="@company/package-b"
    



    알아야 할 사항



  • Turbo는 작업 실행 및 캐싱에 사용되고 있습니다.

  • 패키지를 symlinking하는 데 Yarn 작업 공간이 사용되고 있습니다.
  • node_modules 및 .lock 파일을 삭제하는 것을 잊지 마십시오. 그렇지 않으면 마이그레이션으로 인해 오류가 발생할 수 있습니다.



  • 터보로 마이그레이션



    우리의 경우 로컬 및 ci 모두에 대해 전역적으로 사용하고 있으며 package.json에 직접 설치할 수도 있습니다.
    npm install --global turbo
    이제 lerna.json 파일을 삭제하고 다음 콘텐츠로 turbo.json 파일을 생성해야 합니다.

    Link to Turborepo docs

    우리에게는 명령 마이그레이션을 시작하는 것으로 충분했습니다. 이것에 대한 재미있는 점은 모든 앱 deps를 빌드하기 위해 하나의 명령만 실행하면 된다는 것입니다.

    # Bootstrap workspaces
    yarn install
    
    # Build app a
    turbo run build --scope="@company/app-a"
    
    # Build app b
    turbo run build --scope="@company/app-b"
    


    (권장하지 않음) 좀 더 명시적인 것을 원하는 경우:

    # Bootstrap workspaces
    yarn install
    
    # Build package a
    turbo run build --scope="@company/package-a" --no-deps
    
    # Build package b
    turbo run build --scope="@company/package-b" --no-deps
    
    # Build app a
    turbo run build --scope="@company/app-a" --no-deps
    


    turbo.json 파일을 수정하여 take advance of it에 더 많은 명령을 추가할 수 있지만 우리의 경우에는 이런 방식으로 해도 괜찮았고 다른 명령에는 원사 작업 공간을 사용하고 있습니다.

    yarn workspaces run lint:fix
    yarn workspaces run prettier:fix
    


    개요:



    이 기사가 Turbo로 마이그레이션을 시작하는 데 도움이 되고 우리보다 더 복잡한 워크플로를 마이그레이션하는 데 도움이 되기를 바랍니다.

    에서 저를 팔로우하는 것을 잊지 마세요. 저는 솔직히 아무 것도 게시하지 않지만 백엔드 및 프론트엔드 개발자에게 흥미로운 많은 것을 리트윗합니다.

    좋은 웹페이지 즐겨찾기