Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kan bruke esbuild med vite forbedring av transformasjonshastigheter


Kan bruke esbuild med vite forbedring av transformasjonshastigheter


Ja, bruk av esbuild med Vite kan forbedre transformasjonshastighetene betydelig sammenlignet med å bruke andre bunter som WebPack. Her er noen viktige punkter:

pre-bundling avhengigheter med esbuild

Vite bruker esbuild for å forhåndsbunde avhengigheter, som er omtrent 20-30 ganger raskere enn å bruke TypeScript-kompilatoren (TSC) direkte [3]. Dette pre-bundling-trinnet konverterer CommonJS/UMD-moduler til ESM og forbedrer Vites kalde starttid sammenlignet med JavaScript-baserte bundlers [1].

Raskere typeskrift Transformasjon

Vite utnytter Esbuilds Custom TypeScript -parser som er optimalisert for ytelse. Den unngår noen av hastighetshulene i den offisielle typeskripekompilatoren, som tung bruk av megamorfe objektformer og unødvendige dynamiske egenskapstilganger [3].

Empiriske ytelsesmålinger

Benchmarks viser at Vite med Esbuild kan være mye raskere enn Webpack for visse operasjoner [2]:

- Opprinnelig `garn start` build: vite 6s vs webpack 150s
- React Component Hot Reload: Vite 1s vs Webpack 13s
- Serverdataendring "Hot" Reload: Vite 13s vs Webpack 17s

Mens de eksakte ytelsesgevinstene vil avhenge av prosjektet, viser den samlede trenden betydelige speedups fra å bruke esbuild for transformasjoner i Vite sammenlignet med alternativer som Webpack [2].

Imidlertid er det viktig å merke seg at Esbuild ikke utfører typekontroll, så det kan hende du må kjøre `TSC -Noemit` separat for å sikre full type sikkerhet [4]. Noen funksjoner som `const enum` støttes heller ikke ennå av esbuild [4].

Oppsummert er å utnytte Esbuilds raske transformasjonsevner en nøkkelfaktor i Vites ytelsesfordeler i forhold til andre bundlers. Hastighetsgevinstene kan være betydelige, spesielt under utvikling, men det er noen avveininger også å vurdere.

Sitasjoner:
[1] https://vitejs.dev/guide/features
[2] https://dev.to/noriste/migrating-a-150k-loc-codebase-to-vite-and-esbuild-how-part-2-3-1c08
[3] https://esbuild.github.io/faq/
[4] https://github.com/vitejs/vite/issues/1585
[5] https://github.com/vitejs/vite/issues/3193