Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Può usare esbuild con vite migliorare le velocità di trasformazione


Può usare esbuild con vite migliorare le velocità di trasformazione


Sì, l'uso di ESBuild con VITE può migliorare significativamente le velocità di trasformazione rispetto all'uso di altri bundler come Webpack. Ecco alcuni punti chiave:

dipendenze pre-bundling con esbuild

Vite usa ESBuild per le dipendenze pre-bombe, che è circa 20-30 volte più veloce rispetto all'uso diretto del compilatore TypeScript (TSC) [3]. Questo passaggio pre-bundling converte i moduli Commonjs/UMD in ESM e migliora il tempo di inizio a freddo di Vite rispetto ai bundler basati su JavaScript [1].

trasformazione più veloce dattiloscrizione

VITE sfrutta il parser dattiloscritto personalizzato di Esbuild, ottimizzato per le prestazioni. Evita alcuni dei dossi della velocità nel compilatore dattiloscritto ufficiale, come un uso intenso delle forme di oggetti megamorfiche e accessi inutili di proprietà dinamica [3].

misurazioni delle prestazioni empiriche

I benchmark mostrano che Vite con Esbuild può essere molto più veloce del webpack per alcune operazioni [2]:

- build iniziale `filati": vite 6s vs webpack 150s
- React Component Hot Ricarica: Vite 1s vs Webpack 13s
- Recarica i dati del server "Hot": Vite 13S vs Webpack 17S

Mentre gli esatti guadagni delle prestazioni dipenderanno dal progetto, la tendenza complessiva mostra accelerazioni significative dall'uso di ESBuild per le trasformazioni in VITE rispetto a alternative come Webpack [2].

Tuttavia, è importante notare che ESBuild non esegue il controllo dei tipi, quindi potrebbe essere necessario eseguire `TSC --Noemit` separatamente per garantire la sicurezza a pieno tipo [4]. Alcune funzionalità come `const enum` non sono ancora supportate da Esbuild [4].

In sintesi, sfruttare le capacità di trasformazione rapida di Esbuild è un fattore chiave nei vantaggi delle prestazioni di Vite rispetto ad altri bundler. I guadagni di velocità possono essere sostanziali, specialmente durante lo sviluppo, ma ci sono anche alcuni compromessi da considerare.

Citazioni:
[1] https://vitejs.dev/guide/features
[2] https://dev.to/noriste/migrating-a-150k-coccodebase-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