10 puntos por xguru 2024-03-11 | 1 comentarios | Compartir por WhatsApp
  • Un bundler de JavaScript escrito en Rust para usarse en el futuro como bundler en Vite
  • Ofrece una API y una interfaz de plugins compatibles con Rollup, pero su alcance será más parecido al de esbuild

Por qué estamos desarrollando Rolldown

  • Actualmente Vite usa internamente dos bundlers
    • esbuild: se usa para el pre-bundling de dependencias, transformación de TypeScript / JSX, reducción de target y minification
    • Rollup: se usa para builds de producción y soporta una interfaz de plugins compatible con Rollup
  • Ambos bundlers son excelentes, pero a cada uno le faltan funciones que el otro ofrece
    • esbuild es muy rápido y rico en funciones, pero no es adecuado para bundlear aplicaciones por sus limitaciones en la salida, especialmente en la división de chunks
    • Rollup es maduro y está probado en producción para bundlear aplicaciones, pero es mucho más lento que los bundlers compilados a lenguajes nativos
  • Tener que usar dos bundlers distintos no es lo ideal en varios aspectos
    • Las diferencias sutiles entre salidas pueden causar diferencias de comportamiento entre el build de desarrollo y el build de producción
    • El código fuente del usuario se analiza, transforma y serializa repetidamente por varias herramientas a lo largo del build de producción, lo que genera mucho overhead evitable
  • Idealmente, Vite debería poder aprovechar un solo bundler que ofrezca rendimiento a nivel nativo, transforms integradas para evitar overhead de parsing/serialización, una interfaz de plugins compatible con Rollup y controles avanzados de salida de build adecuados para aplicaciones grandes
  • Esa es precisamente la razón por la que estamos construyendo Rolldown
    • Rolldown está escrito en Rust y actualmente se construye sobre Oxc, aprovechando su parser y resolver. También planea aprovechar en el futuro el transformer y el minifier de Oxc cuando estén disponibles
    • El objetivo a largo plazo es que los usuarios de Vite puedan cambiar a una versión de Vite que use internamente Rolldown (directa o indirectamente a través del framework) con la menor fricción posible
    • Al mismo tiempo, Rolldown también podrá usarse directamente como bundler independiente

Compatibilidad con Rollup y diferencias

  • Rolldown busca alinearse lo más posible con la API y la interfaz de plugins de Rollup para facilitar su adopción
  • En casos de uso simples, podrá servir como reemplazo de Rollup. Sin embargo, puede haber algunas diferencias en edge cases, especialmente cuando intervienen opciones avanzadas
  • Aunque comenzó con la intención de portar el código de JS a Rust, pronto se dieron cuenta de que para lograr el mejor rendimiento había que priorizar escribir el código de acuerdo con la manera en que funciona Rust
  • La arquitectura interna de Rolldown está más cerca de esbuild que de Rollup, y su lógica de división de chunks también puede diferir de la de Rollup
  • El alcance de Rolldown también es más amplio que el de Rollup y más similar al de esbuild. Incluye soporte para CommonJS y resolución de node_modules por defecto, y en el futuro también planea soportar transformación de TypeScript / JSX y minification

1 comentarios

 
[Este comentario fue ocultado.]