- Mako ist ein auf Rust basierendes Frontend-Build-Tool, das "sehr schnell" und "production-grade" ist
- Veröffentlicht wurde es im März 2023 und nach einem Jahr als Open Source freigegeben
- Das Projekt wurde gestartet, weil eine "sehr schnelle" Build-Geschwindigkeit benötigt wurde
- Der Ausdruck "production-grade" wird verwendet, weil Mako seit dem 24.11.2023 intern bei Ant Group (früher Alipay) offiziell ausgerollt ist
- Es wurde anhand von Tausenden Projekten sowie den darin verwendeten unterschiedlichen npm-Paketen und Versionen validiert
Warum Mako entwickelt wurde
- Im vergangenen Jahr (März 2023) startete das Team drei Projekte zu Rust, SSR und AIG und entschied sich für Rust, um Probleme mit der Build-Performance zu lösen
- Gründe dafür, nicht auf bestehende Rust-Tools zu setzen, sondern selbst etwas zu bauen, waren die Komplexität und folgende Punkte
- der Reifegrad von Community-Bibliotheken und ihre Kompatibilität mit den Anforderungen von Ant
- die Notwendigkeit, Kontrolle zu behalten (aus geschäftlichen Gründen ist umfangreiche Anpassung zwingend erforderlich)
- moderne Meta-Frameworks benötigen neben dem Build auch Frameworks zur Compile-Zeit. Besonders in SSR- und RSC-Szenarien ist viel Kompilierung erforderlich
- die Notwendigkeit, Rust zu lernen und das Team weiterzuentwickeln
- Zeitachse von Mako: Kickoff im März 2023, erste nutzbare Version im Juli 2023, interner Rollout bei Ant im November 2023, Open-Source-Freigabe im Juni 2024
Geschwindigkeit
- In die Geschwindigkeit von Mako wurde viel Aufwand investiert. Die Benchmark-Daten sind wie folgt
- Die Benchmarks wurden auf einem Projekt ausgeführt, das auch mit Turbopack auf einem Mac Book Pro M2 Max getestet wird
- Berücksichtigt wurden unter anderem dev cold start-Zeit, HMR-Zeit für Root-Node und Leaf-Node, Build-Zeit für den Production-Build sowie die Größe des JS-Bundles
- Im Vergleich zur vorherigen Version ergibt sich Folgendes
- Beim Build des vollständigen Projekts Ant Design Pro benötigt Webpack 16 Sekunden, Mako 3,9 Sekunden – also eine 4-fache Beschleunigung
- Beim Build des vollständigen Projekts Ant Design Pro liefert Mako nahezu Echtzeit-Hot-Updates
- Beim Build des Smallfish-Projekts, eines RSC-basierten Intranet-Hybrid-Frameworks, wurde die Build-Zeit des Scaffold-Projekts von 36,7 Sekunden auf 1,2 Sekunden verkürzt
- Außerdem verfügt Mako über eine experimentelle SSU-Funktion, die ähnlich wie die frühere MFSU-Implementierung das Packaging und Caching von Abhängigkeiten übernimmt
- Je nach Verhältnis von Abhängigkeiten zum Source Code kann dies den Dev-Hot-Start um das 10- bis 50-Fache beschleunigen
1 Kommentare
Hacker-News-Kommentare
Im Vergleich zu esbuild oder swc könnte die Performance schlechter sein
Dieses Tool unterstützt nicht standardisierte Funktionen und könnte zu einer Abhängigkeit von einem bestimmten Bundler führen
Die Hauptstärke von Vite besteht darin, das bestehende Plugin-System von rollup zu nutzen
Wegen des Wortes "Rust" im Titel dachte ich, es handle sich um einen Rust-Compiler für das Web
Da ich kein Webentwickler bin, bin ich verwirrt darüber, was ein Bundler eigentlich macht
Ich bin kein Webentwickler, entwickle aber regelmäßig Web-Apps
Rspack (ByteDance) hat Version 1.0 veröffentlicht
Ein weiterer interessanter Rust-basierter JavaScript-Bundler ist Oxid / OXC
Ich frage mich, was passiert, wenn wir an die Grenzen des Bundlings stoßen
Ich frage mich, ob es mit MakoTemplates zusammenhängt