Skip to content

Turborepo

JavaScript/TypeScript Monorepo를 위한 빠른 빌드 시스템

Features

  • Vercel이 인수
  • JavaScript/TypeScript Monorepo를 위한 빠른 빌드 시스템
    • 프론트엔드 에는 모노레포가 생산성에 좋지만, 툴링이 복잡했기에 그걸 개선한 도구
  • 인크리멘털 빌드 지원
  • 타임스탬프가 아닌 콘텐츠를 인식하는 해슁
  • 리모트 캐슁으로 동료 및 CI/CD 시스템이 더 빠르게 빌드 가능
  • 모든 코어를 사용하는 병렬 실행
  • 런타임코드 / 소스맵을 건드리지 않는 Zero Runtime Overhead
  • 모노레포에서 특정 타겟용 서브셋만 생성해서 PaaS 배포를 빠르게
  • Task Pipelines : 태스크 간에 연결을 정의해서 빌드를 언제 어떻게 실행할지 최적화

Turborepo가 Go에서 Rust로 마이그레이션하는 이유

"Turborepo가 Go에서 Rust로 마이그레이션하는 이유" by Vercel

  • Turborepo 는 JavaScript / TypeScript 를 위한 고성능 빌드 시스템
    • 증분빌드, 병렬실행, 리모트 캐쉬(Vercel 인프라 사용)등을 이용해서 성능 향상 시도
    • 처음에는 좋은 성능을 보여준 esbuild 을 쫒아 만들어짐
  • Turbo 패키지로 Rust 로 작성 된 Turbopack 과 코드 베이스가 합쳐짐
  • Go 언어가 서버 개발에서 보여주는 장점과 빌드 도구를 만들 때 요구 되는 점이 다름을 느낌
    • Go: goroutine 모델, Context API 및 서버 인프라의 표준 라이브러리에 집중
    • Rust: Process management, Filesystem, Low-level OS concepts, 사용자 컴퓨터에 배포하기
  • 강력한 에코 시스템, 다양하고 좋은 crate (패키지) 가 이미 많음
  • C/C++ 라이브러리를 가져다 쓰기에 Go 에 비해서 간단하고 빠름
  • Turbopack 과 같은 코드 베이스로 간다면 유지 보수, 코드 공유등에서 장점
  • Rust 가 개발자들을 행복하게 만들 주고 따라서 여러가지 긍정정 효과를 가져다 줌
  • 현재는 “Rust-Go-Rust” 구조로 사용 되지만 계속 마이그레이션 될 것

Monorepo Projects

  • Monorepo
  • Bazel (by Google) - A fast, scalable, multi-language and extensible build system.
  • Gradle (by Gradle, Inc) - A fast, flexible polyglot build system designed for multi-project builds.
  • Lage (by Microsoft) - Task runner in JS monorepos
  • Lerna - A tool for managing JavaScript projects with multiple packages.
  • Nx (by Nrwl) - Next generation build system with first class monorepo support and powerful integrations.
  • Rush (by microsoft) - Geared for large monorepos with lots of teams and projects. Part of the Rush Stack family of projects.
  • Turborepo (by Vercel) - The high-performance build system for JavaScript & TypeScript codebases.
  • Pants
  • Earthly

See also

Favorite site