6P by xguru 19일전 | favorite | 댓글과 토론
  • Rust로 작성된 차세대 Javascript 번들러
  • Webpack API 및 에코시스템과 호환되지만 10배 이상 빠름
  • ByteDance 내에서 개발되어 주로 사용되며 Microsoft, Amazon, Alibaba 등 많은 기업에서도 사용하기 시작

0.1버전(18개월전) 이후 추가된 새로운 기능들

  • 성능 향상: 대규모 프로젝트에서도 더 나은 성능을 보장하기 위한 성능 개선 및 주요 기능 추가됨
  • 호환성 개선: webpack 플러그인 및 로더와의 호환성 개선, React, Preact, Vue, Solid, Svelte 및 NestJS 지원
  • 번들 크기 최적화: webpack과 동등한 수준으로 최적화 기능 제공
  • Module Federation 2.0 지원
  • 안정적인 API 및 새 웹사이트

Rspack을 선택해야 하는 이유

  • 점진적 마이그레이션 지원
  • 브라우저, Node.js 외에도 Deno, Electron, 크로스 플랫폼 애플리케이션, MiniApps 등 JavaScript가 실행되는 모든 환경 지원
  • Rspack 기반의 Rstack("Rspack Stack") 툴체인 제공
    • Rspack: 고성능 번들러 구현에 중점을 두며, 성능과 유연한 구성의 균형을 맞추는 데 주력
    • Rsbuild: 웹 애플리케이션 빌드에 중점을 두며, 즉시 사용 가능한 개발 경험 제공
    • Rslib: 라이브러리 빌드에 중점을 두며, 고품질 ESM 및 CJS 출력 제공
    • Rspress: 정적 사이트 생성에 중점을 두며, 문서 사이트 및 블로그 구축을 위한 MDX 지원
    • Rsdoctor: 빌드 분석에 중점을 두며, 개발자가 빌드 관련 문제를 해결하는 데 도움

webpack과의 호환성

  • Rspack 1.0은 webpack v5와 호환되도록 설계되어, webpack을 사용하는 많은 프로젝트가 Rspack으로 원활하게 마이그레이션할 수 있도록 도움
  • webpack과의 호환성을 유지하면서도 Rspack 1.0은 최신 웹 표준을 수용하고 궁극적인 빌드 성능을 목표로 함
    • 웹 표준의 경우, Rspack은 최신 웹 표준의 발전과 TC39 및 웹 표준의 최신 개발 사항을 적극적으로 따름. 예를 들어, Rspack은 이미 new Worker()를 통한 Web Workers 사용, Import Attributes를 통한 JSON 모듈 가져오기, CSS Module Scripts 사양에 기반한 CSS 가져오기를 지원함
    • 성능의 경우, 1.0에 많은 최적화를 도입함. 예를 들어 JavaScript 측 훅이 사용되지 않는 경우, Rust 측에서 JavaScript 측과의 통신을 호출하지 않음. 또한 Rspack은 많은 메시지 객체에 대해 지연 로딩을 수행함. 메시지 객체가 크더라도 JavaScript가 속성의 하위 집합만 사용하는 경우, Rspack은 사용된 데이터만 전송하여 Rust와 JavaScript 사이의 통신 오버헤드를 최소화함. Rspack은 향후 Rust와 JavaScript 간의 더 효율적인 통신을 위해 더 가벼운 훅을 제공할 계획임
  • 향후 주요 릴리스에서 Rspack은 현대적인 웹 개발의 요구 사항을 더 잘 충족시키기 위해 webpack API를 기반으로 발전해 나갈 것임

앞으로의 계획

  • Rspack 1.x 개발 - 향후 12~18개월간 새로운 기능과 개선사항 추가 예정
    • 더 빠른 HMR, 이식 가능한 캐시, TypeScript 기반 최적화, 안정적인 Rust API, React Server Components 지원, ESM 출력 개선 등 지원 예정
  • Rsbuild 1.0, Rsdoctor 1.0, Rslib 0.x, Rspress 2.0 개발