- Mako es una herramienta de build frontend basada en Rust, "muy rápida" y "production-grade"
- Se lanzó en 2023.3 y se volvió de código abierto un año después
- El proyecto comenzó por la necesidad de una velocidad de build "muy rápida"
- La expresión "production-grade" se usa porque, desde el 24.11.2023, Mako fue lanzado oficialmente de forma interna en Ant Group (antes Alipay)
- Ha sido validado con miles de proyectos y con diversos paquetes npm y versiones usados en ellos
Razones para desarrollar Mako
- El año pasado (2023.3), el equipo inició tres proyectos: Rust, SSR y AIG, y eligió Rust para resolver problemas de rendimiento en el build
- Las razones para no usar herramientas Rust existentes y crear una propia fueron la complejidad
- La madurez de las librerías de la comunidad y su compatibilidad con los requisitos de Ant
- La necesidad de tener control (por razones de negocio, era indispensable mucha personalización)
- Los meta-frameworks modernos necesitan, además del build, un framework en tiempo de compilación. En especial, se requiere mucha compilación en escenarios de SSR y RSC
- La necesidad de aprender Rust y de que el equipo creciera
- Cronología de Mako: kickoff en 2023.3, primera versión utilizable en 2023.7, lanzamiento interno en Ant en 2023.11 y código abierto en 2024.6
Velocidad
- Mako ha dedicado mucho esfuerzo a la velocidad. Los datos de benchmark son los siguientes
- El benchmark se ejecutó en un proyecto donde también se prueba Turbopack, sobre una Mac Book Pro M2 Max
- Incluye dimensiones como tiempo de dev cold start, tiempo de HMR en nodo raíz y nodo hoja, tiempo de build de producción y tamaño del bundle JS
- En comparación con la versión anterior, ocurre lo siguiente
- Al compilar el proyecto completo de Ant Design Pro, Webpack tarda 16 segundos y Mako 3.9 segundos, una mejora de 4 veces en velocidad
- Al compilar el proyecto completo de Ant Design Pro, Mako ofrece hot update casi en tiempo real
- Al compilar Smallfish, un framework híbrido de intranet basado en RSC, el tiempo de build del proyecto scaffold se redujo de 36.7 segundos a 1.2 segundos
- Además, Mako también tiene una función experimental llamada SSU, que realiza empaquetado y caché de dependencias de forma similar a la implementación anterior de MFSU
- Dependiendo de la proporción de dependencias frente al código fuente, puede acelerar el hot start-up en desarrollo entre 10 y 50 veces
1 comentarios
Opiniones en Hacker News
Puede tener un rendimiento inferior en comparación con esbuild o swc
Esta herramienta soporta funciones no estándar, lo que puede generar dependencia de un bundler específico
La función principal de Vite es aprovechar el sistema de plugins existente de rollup
Como el título tenía "Rust", pensé que era un compilador de Rust para la web
Como no soy desarrollador web, me confunde qué hace realmente un bundler
No soy desarrollador web, pero desarrollo aplicaciones web con regularidad
Rspack (ByteDance) lanzó la versión 1.0
Otro bundler de JavaScript basado en Rust interesante es Oxid / OXC
Me pregunto qué pasará cuando lleguemos al límite del bundling
Me pregunto si está relacionado con MakoTemplates