Vite 8 Beta: Rolldown Destekli Vite

Vite 8'in ilk betasını yayınlamaktan heyecan duyuyoruz. Bu sürüm, temel araç zincirini birleştiriyor ve önemli derleme performansı iyileştirmelerinin yanı sıra daha tutarlı davranışlar getiriyor. Vite artık esbuild ve Rollup kombinasyonunun yerine paketleyici olarak Rolldown'ı kullanıyor.
TL;DR (Özet): Vite 8'in ilk betası, Rolldown tarafından desteklenerek kullanıma sunuldu. Vite 8, önemli ölçüde daha hızlı üretim derlemeleri sunuyor ve gelecekteki iyileştirme olanaklarının kilidini açıyor. vite sürümünü 8.0.0-beta.0'a yükselterek ve geçiş rehberini okuyarak yeni sürümü deneyebilirsiniz.
Web İçin Yeni Bir Paketleyici
Vite daha önce geliştirme ve üretim derlemeleri için farklı gereksinimleri karşılamak adına iki paketleyiciye güveniyordu:
* esbuild: Geliştirme sırasında hızlı derleme için. * Rollup: Üretim derlemelerini paketlemek, parçalamak ve optimize etmek için.
Bu yaklaşım, Vite'ın ayrıştırma ve paketlemeyi yeniden icat etmek yerine geliştirici deneyimine ve orkestrasyona odaklanmasını sağladı. Ancak, iki ayrı paketleme hattını sürdürmek tutarsızlıklar getirdi: ayrı dönüşüm hatları, farklı eklenti sistemleri ve geliştirme ile üretim arasındaki paketleme davranışını uyumlu tutmak için artan miktarda "yapıştırıcı" kod.
Bunu çözmek için VoidZero ekibi, Vite'da kullanılmak üzere tasarlanan yeni nesil paketleyici Rolldown'ı geliştirdi. Rolldown şunlar için tasarlandı:
* Performans: Rolldown, Rust ile yazılmıştır ve yerel (native) hızda çalışır. esbuild'in performans seviyesiyle eşleşir ve Rollup'tan 10-30 kat daha hızlıdır. * Uyumluluk: Rolldown, Rollup ve Vite ile aynı eklenti API'sini destekler. Çoğu Vite eklentisi kutudan çıktığı gibi Vite 8 ile çalışır. * Daha Fazla Özellik: Rolldown, Vite için daha gelişmiş özelliklerin kilidini açar; tam paket modu (full bundle mode), daha esnek parça bölme kontrolü (chunk split control), modül düzeyinde kalıcı önbellek, Modül Federasyonu ve daha fazlası.
Araç Zincirini (Toolchain) Birleştirmek
Vite'ın paketleyici değişikliğinin etkisi performansın ötesine geçiyor. Paketleyiciler; ayrıştırıcılar (parsers), çözücüler (resolvers), dönüştürücüler (transformers) ve küçültücülerden (minifiers) yararlanır. Rolldown, bu amaçlar için yine VoidZero tarafından yönetilen Oxc projesini kullanır.
Bu, Vite'ı aynı ekip tarafından sürdürülen uçtan uca bir araç zincirinin giriş noktası yapar: 1. Yapı aracı (Vite) 2. Paketleyici (Rolldown) 3. Derleyici (Oxc)
Bu uyum, yığın genelinde davranış tutarlılığı sağlar ve JavaScript geliştikçe yeni dil özelliklerine hızla uyum sağlamamıza olanak tanır. Ayrıca, daha önce Vite tarafından tek başına yapılamayan çok çeşitli iyileştirmelerin kilidini açar. Örneğin, Rolldown'da daha iyi tree-shaking gerçekleştirmek için Oxc'un semantik analizinden yararlanabiliriz.
Vite Nasıl Rolldown'a Geçti?
Rolldown destekli bir Vite'a geçiş temel bir değişikliktir. Bu nedenle ekip, kararlılıktan veya ekosistem uyumluluğundan ödün vermeden bunu uygulamak için kasıtlı adımlar attı.
İlk olarak, ayrı bir rolldown-vite paketi teknik önizleme olarak yayınlandı. Bu, Vite'ın kararlı sürümünü etkilemeden erken benimseyenlerle çalışmamızı sağladı. Erken benimseyenler, değerli geri bildirimler sağlarken Rolldown'ın performans kazanımlarından yararlandılar. Öne çıkanlar:
* Linear: Üretim derleme süreleri 46 saniyeden 6 saniyeye düştü. * Mercedes-Benz.io: Derleme sürelerini %38'e kadar azalttı. * Beehiiv: Derleme süresini %64 azalttı.
Daha sonra, anahtar Vite eklentilerini rolldown-vite'a karşı doğrulamak için bir test paketi oluşturduk. Bu CI işi, özellikle SvelteKit, react-router ve Storybook gibi çerçeveler ve meta-çerçeveler için gerilemeleri ve uyumluluk sorunlarını erken yakalamamıza yardımcı oldu.
Son olarak, geliştiricilerin Rollup ve esbuild seçeneklerinden ilgili Rolldown seçeneklerine geçmesine yardımcı olacak bir uyumluluk katmanı oluşturduk.
Sonuç olarak, herkes için Vite 8'e sorunsuz bir geçiş yolu var.
Vite 8 Beta'ya Geçiş
Vite 8, çekirdek derleme davranışına dokunduğu için, yapılandırma API'sini ve eklenti kancalarını (hooks) değiştirmemeye odaklandık. Yükseltme yapmanıza yardımcı olacak bir geçiş rehberi oluşturduk.
İki yükseltme yolu mevcuttur:
1. Doğrudan Yükseltme: package.json'daki vite sürümünü güncelleyin ve her zamanki dev ve build komutlarını çalıştırın.
2. Aşamalı Geçiş: Vite 7'den rolldown-vite paketine, ardından Vite 8'e geçin. Bu, Vite'daki diğer değişiklikler olmadan Rolldown'a özgü uyumsuzlukları veya sorunları belirlemenizi sağlar. (Daha büyük veya karmaşık projeler için önerilir)
ÖNEMLİ
Belirli Rollup veya esbuild seçeneklerine güveniyorsanız, Vite yapılandırmanızda bazı ayarlamalar yapmanız gerekebilir. Ayrıntılı talimatlar ve örnekler için lütfen geçiş rehberine bakın. Tüm kararlı olmayan (non-stable) büyük sürümlerde olduğu gibi, her şeyin beklendiği gibi çalıştığından emin olmak için yükseltmeden sonra kapsamlı test yapılması önerilir.
Vite'ı bağımlılık olarak kullanan bir çerçeve veya araç kullanıyorsanız (örneğin Astro, Nuxt veya Vitest), package.json dosyanızda vite bağımlılığını geçersiz kılmanız (override) gerekir; bu, paket yöneticinize bağlı olarak biraz farklı çalışır:
npm, Yarn, pnpm, Bun:
{
"overrides": {
"vite": "8.0.0-beta.0"
}
}
Bu geçersiz kılmaları ekledikten sonra, bağımlılıklarınızı yeniden yükleyin ve geliştirme sunucunuzu başlatın veya projenizi her zamanki gibi derleyin.
Vite 8'deki Ek Özellikler
Rolldown ile birlikte gelmesinin yanı sıra, Vite 8 şunlarla birlikte gelir:
* Yerleşik tsconfig paths desteği: Geliştiriciler resolve.tsconfigPaths'i true olarak ayarlayarak bunu etkinleştirebilir. Bu özelliğin küçük bir performans maliyeti vardır ve varsayılan olarak etkin değildir.
* emitDecoratorMetadata desteği: Vite 8 artık TypeScript'in emitDecoratorMetadata seçeneği için yerleşik otomatik desteğe sahiptir.
Geleceğe Bakış
Hız her zaman Vite için belirleyici bir özellik olmuştur. Rolldown ve uzantısı Oxc ile entegrasyon, JavaScript geliştiricilerinin Rust'ın hızından yararlanması anlamına gelir. Vite 8'e yükseltmek, sadece Rust kullanmaktan kaynaklanan performans kazanımları sağlamalıdır.
Ayrıca, büyük projeler için Vite'ın geliştirme sunucusu hızını büyük ölçüde artıran Tam Paket Modu'nu (Full Bundle Mode) yakında göndermekten heyecan duyuyoruz. Ön sonuçlar; 3 kat daha hızlı geliştirme sunucusu başlangıcı, %40 daha hızlı tam yeniden yüklemeler ve 10 kat daha az ağ isteği gösteriyor.
Bir diğer belirleyici Vite özelliği ise eklenti ekosistemidir. JavaScript geliştiricilerinin, Rust'ın performans kazanımlarından yararlanırken Vite'ı aşina oldukları dil olan JavaScript'te genişletmeye ve özelleştirmeye devam etmelerini istiyoruz. Ekibimiz, bu Rust tabanlı sistemlerde JavaScript eklenti kullanımını hızlandırmak için VoidZero ekibiyle işbirliği yapıyor.



