Bundler
Modül Paketleyici
- Okunuşu
- bandlır
Kısaca
Bundler, JavaScript modüllerini ve bağımlılıklarını tarayıcıların hızlıca indirip çalıştırabileceği birkaç optimize dosyada birleştiren bir derleme aracıdır.
JavaScript bundler nedir?
Bundler, bir web uygulamasının JavaScript ya da TypeScript modülleri, CSS, görseller ve npm'den yüklenen paketler gibi pek çok kaynak dosyasını alıp bundle adı verilen az sayıda optimize dosyada birleştiren bir araçtır. Modern uygulamalar binlerce modül içerebilir ve her birini ayrı bir istekle yüklemek sayfaları yavaşlatırdı; bu yüzden bundler onları tarayıcı için paketler.
Bir giriş dosyasından (entry) başlar, bir bağımlılık grafiği oluşturmak için her import ifadesini izler ve kodu doğru sırayla çıkarır. Bu sırada genellikle kodu dönüştürür (örneğin TypeScript veya JSX'i derler), tree shaking ile kullanılmayan dışa aktarımları kaldırır, sonucu küçültmek için minify eder ve her sayfanın yalnızca ihtiyacı olanı indirmesi için code splitting ile parçalara (chunk) böler. Yaygın kullanılan bundler'lar arasında webpack, Rollup, esbuild, Parcel, Rolldown ve Turbopack bulunur; Vite gibi araçlar ise bunları hızlı bir geliştirme sunucusuyla sarmalar.
Bir yolculuk için bavul hazırlamayı düşünün: elli ayrı eşya taşımak yerine her şeyi düzenli tek bir bavula katlar, gerekmeyenleri geride bırakırsınız. Bundler'lar ayrıca yerel geliştirme sunucularıyla ve değişen kodu tam sayfa yenilemesi olmadan çalışan sayfaya yerleştiren hot module replacement ile geliştirme deneyimine de güç verir.
Bundler çoğunlukla paket yöneticisi ya da transpiler ile karıştırılır. npm gibi bir paket yöneticisi projenizin bağımlı olduğu kütüphaneleri indirir, Babel veya TypeScript derleyicisi gibi bir transpiler kodu bir söz diziminden diğerine dönüştürür, bundler ise tüm bu kodu tarayıcıya hazır dosyalarda birleştirir. Tarayıcılar artık yerel ES modüllerini desteklediği için bazı araçlar geliştirme sırasında paketlemeyi atlar, ancak üretim derlemeleri hız için hâlâ genellikle paketlenir.
Önemli noktalar
- Bundler, birçok modülü ve varlığı (asset) birkaç optimize dosyada birleştirir.
- Bağımlılık grafiği oluşturmak için bir giriş noktasından
importifadelerini izler. - Tree shaking, minification ve code splitting paketleri küçültür ve daha hızlı yüklenir hale getirir.
- Paket yöneticisi bağımlılıkları yükler; bundler onları tarayıcı için paketler.
- Bundler tabanlı geliştirme sunucuları geliştirme sırasında hot module replacement sunar.
Örnek
// src/math.js
export const add = (a, b) => a + b;
export const unused = () => "never imported"; // removed by tree shaking
// src/main.js (the entry point)
import { add } from "./math.js";
console.log(add(2, 3));
// Build with a command such as:
// npx esbuild src/main.js --bundle --minify --outfile=dist/bundle.js
// dist/bundle.js is roughly one minified line:
// (()=>{var o=(n,d)=>n+d;console.log(o(2,3));})();Sık sorulan sorular
Neden bir bundler'a ihtiyacım var?
Bundler, birçok modülü ve npm paketini birkaç optimize dosyaya dönüştürür; bu da ağ isteklerini azaltır, kullanılmayan kodu kaldırır ve TypeScript, JSX ile modern söz dizimini kullanmanıza olanak tanır. Yalnızca birkaç betiği olan küçük siteler onsuz da sorunsuz çalışabilir.
Bundler ile paket yöneticisi arasındaki fark nedir?
npm, pnpm veya Yarn gibi bir paket yöneticisi projenizin kullandığı kütüphaneleri indirir ve sürümlerini izler. Bundler ise sizin kodunuzu ve bu kütüphaneleri tarayıcıların yükleyebileceği dosyalarda birleştirir.
Tree shaking nedir?
Tree shaking, kodunuzun hiç import etmediği dışa aktarımları kaldıran bir bundler optimizasyonudur. ES modül import ve export söz diziminde en iyi şekilde çalışır; çünkü bunlar kod çalıştırılmadan analiz edilebilir.
İlgili sayfalar
- JavaScriptWeb Geliştirme, s. 25JavaScript, web tarayıcılarında sayfaları etkileşimli hale getiren ve Node.js gibi çalışma ortamlarıyla sunucularda da çalışan programlama dilidir.
- TypeScriptWeb Geliştirme, s. 51TypeScript, JavaScript üzerine statik tipler ekleyerek birçok hatayı kod çalışmadan yakalayan ve düz JavaScript'e derlenen bir programlama dilidir.
- Node.jsBackend ve API'ler, s. 31Node.js, JavaScript'i tarayıcı dışında çalıştıran, en çok web sunucuları, API'ler ve komut satırı araçları için kullanılan açık kaynaklı çalışma ortamıdır.
- Web TarayıcısıWeb Geliştirme, s. 57Web tarayıcısı, sunuculardan web sayfalarını alıp HTML, CSS ve JavaScript'i ekranda gördüğünüz etkileşimli sayfalara dönüştüren uygulamadır.
- Core Web VitalsWeb Geliştirme, s. 8Core Web Vitals, bir sayfanın gerçek kullanıcı deneyimini ölçen üç metriktir: yükleme hızı (LCP), yanıt verme (INP) ve görsel kararlılık (CLS).
- SPAWeb Geliştirme, s. 42SPA, tek bir HTML sayfası yükleyip içeriği JavaScript ile güncelleyen ve görünümler arası geçişte sayfayı yeniden yüklemeyen web uygulamasıdır.
- ViteWeb Geliştirme, s. 54Vite, geliştirmede kodu tarayıcıya neredeyse anında sunan ve canlı ortam için optimize edilmiş dosyalar halinde paketleyen hızlı bir web derleme aracıdır.
- WebpackWeb Geliştirme, s. 60Webpack, uygulamanın import'larını izleyip JavaScript, CSS, görsel ve diğer dosyaları tarayıcıya uygun paketlerde birleştiren modül paketleyicisidir.
- ES ModülleriWeb Geliştirme, s. 16ES modülleri, JavaScript'in yerleşik modül sistemidir: her dosya kendi kapsamını korur ve kodu diğer dosyalarla import ve export aracılığıyla paylaşır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin