Evet, ESBUILD'i VITE ile kullanmak, webpack gibi diğer paketleri kullanmaya kıyasla dönüşüm hızlarını önemli ölçüde artırabilir. İşte birkaç önemli nokta:
ESBUILD İLE ÖNCE ÖNLEMİ
Vite, TypeScript derleyicisini (TSC) doğrudan [3] kullanmaktan yaklaşık 20-30x daha hızlı olan bağımlılıkları önlemek için esbuild kullanır [3]. Bu ön toplanma adımı, ortak JS/UMD modüllerini ESM'ye dönüştürür ve JavaScript tabanlı paketlere kıyasla Vite'ın soğuk başlangıç zamanını iyileştirir [1].
daha hızlı yazı tipi dönüşümü
Vite, performans için optimize edilmiş olan Esbuild'in özel yazı yazma ayrıştırıcısından yararlanır. Megamorfik nesne şekillerinin ağır kullanımı ve gereksiz dinamik özellik erişimleri gibi resmi TypeScript derleyicisindeki bazı hız darbelerinden kaçınır [3].
Ampirik Performans Ölçümleri
Kıyaslamalar, Esbuild ile Vite'ın belirli işlemler için webpack'ten çok daha hızlı olabileceğini göstermektedir [2]:
- Başlangıç `` İplik Başlangıç 'Build: Vite 6s vs Webpack 150s
- Bileşen Sıcak Yeniden Yükleme: Vite 1S vs Webpack 13s
- Sunucu Veri Değişikliği "Sıcak" Yeniden Yükleme: Vite 13s vs Webpack 17s
Kesin performans kazanımları projeye bağlı olsa da, genel eğilim, WebPack gibi alternatiflere kıyasla VITE'deki dönüşümler için Esbuild'i kullanmaktan önemli hızlandırmalar göstermektedir [2].
Bununla birlikte, ESBUILD'in tip kontrolü yapmadığını belirtmek önemlidir, bu nedenle tam tip güvenliği sağlamak için `tsc -noemit` ayrı ayrı çalıştırmanız gerekebilir [4]. `` Const Enum '' gibi bazı özellikler de Esbuild tarafından henüz desteklenmemektedir [4].
Özetle, Esbuild'in hızlı dönüşüm yeteneklerinden yararlanmak, Vite'ın diğer paketleyicilere göre performans avantajlarında önemli bir faktördür. Hız kazanımları, özellikle gelişim sırasında önemli olabilir, ancak dikkate alınması gereken bazı ödünleşmeler de vardır.
Alıntılar:[1] https://vitejs.dev/guide/features
[2] https://dev.to/noriste/migrating-a-150k-loc-codebase-to-vite ve-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