Minification
Kod Küçültme
- Okunuşu
- minifikeyşın
Kısaca
Minification, davranışı değiştirmeden boşlukları, yorumları ve uzun adları silerek kod dosyalarını küçülten işlemdir; böylece web sayfaları daha hızlı iner.
Minification nedir?
Minification, kaynak kodu hâlâ tamı tamına aynı işi yapan en küçük sürüme dönüştürür. JavaScript için bir minifier boşlukları, satır sonlarını ve yorumları kaldırır, yerel değişken ile parametre adlarını bir iki harfe kısaltır ve bazı ifadeleri daha kısa eşdeğerlerine yeniden yazar. CSS ve HTML de aynı şekilde küçültülebilir. Çıktının insanlar tarafından okunması zordur ama tarayıcılar için fark etmez.
Terser, esbuild, SWC ve Lightning CSS gibi modern minifier'lar önce kodu bir sözdizimi ağacına ayrıştırır; böylece hangi adları yeniden adlandırmanın güvenli olduğunu ve hangi kodun asla çalışamayacağını ve atılabileceğini bilir. Minification genellikle bir üretim derlemesinde otomatik gerçekleşir ve hata mesajlarının ile hata ayıklayıcı kesme noktalarının yine özgün kodunuzu göstermesi için çıktının yanında bir source map üretilir. Sıkıştırmadan önce yüzde 30 ile 60 arasında kazanç yaygındır.
Minification, güzelce biçimlendirilmiş bir tarifi kısa mesaja çevirmek gibidir: her adım hâlâ orada, ama boşluklar, başlıklar ve sevimli açıklamalar yok. Daha küçük dosyalar, daha az indirilecek veri ve tarayıcının ayrıştıracağı daha az metin demektir; bu da özellikle yavaş mobil bağlantılarda Largest Contentful Paint gibi yükleme metriklerini iyileştirir.
Minification çoğunlukla sıkıştırma ve gizleme (obfuscation) ile karıştırılır. gzip veya Brotli gibi sıkıştırma dosya gönderilirken sunucu tarafından uygulanır ve tarayıcı tarafından geri açılır; minification ise dosyayı kalıcı olarak değiştirir. İkisi üst üste uygulanabilir ve birlikte kullanmak en küçük aktarım boyutunu verir. Gizleme, kopyalamayı caydırmak için kodu bilerek anlaşılmaz kılar ve çoğu zaman dosyaları büyütür. Minification bir güvenlik önlemi de değildir: küçültülmüş kod herkes tarafından yeniden biçimlendirilebilir ve frontend kodundaki sırlar görünür kalır.
Önemli noktalar
- Minification, davranışı değiştirmeden boşlukları, yorumları ve uzun adları kaldırır.
- JavaScript, CSS ve HTML için geçerlidir ve genellikle üretim derlemelerinde çalışır.
- Source map'ler, hata ayıklama için küçültülmüş kodu özgün koda bağlar.
- gzip veya Brotli gibi sunucu sıkıştırması minification'ın üzerine çalışır.
- Küçültülmüş kod gizli değildir; yeniden biçimlendirilip okunabilir.
Örnek
// Before minification (readable source)
function calculateTotal(items, taxRate) {
// Sum item prices, then add tax
const subtotal = items.reduce((sum, item) => sum + item.price, 0);
return subtotal * (1 + taxRate);
}
// After minification (same behavior, far fewer bytes)
function calculateTotal(t,e){return t.reduce((t,e)=>t+e.price,0)*(1+e)}
// Typical commands:
// npx terser src/app.js --compress --mangle -o dist/app.min.js
// npx esbuild src/app.js --minify --outfile=dist/app.min.jsSık sorulan sorular
Minification ile sıkıştırma arasındaki fark nedir?
Minification, dosyanın kendisini derleme zamanında daha küçük ama eşdeğer bir sürüme yeniden yazar. gzip veya Brotli gibi sıkıştırma ise dosyayı aktarım için kodlar ve tarayıcı varışta kodunu çözer; ikisini birleştirmek en iyi sonucu verir.
Minification kodumu bozabilir mi?
Doğru bir minifier yalnızca kodun biçimini değiştirir, davranışını değil. Nadir sorunlar, çalışma zamanında constructor.name gibi fonksiyon veya sınıf adlarına dayanan kodlardan gelir; minifier'lar bunları tutacak şekilde yapılandırılmadıkça yeniden adlandırabilir.
.min.js dosyası nedir?
app.min.js gibi küçültülmüş bir JavaScript dosyası için kullanılan bir adlandırma kuralıdır ve çoğunlukla okunabilir app.js dosyasının yanında yayımlanır. Önbellek için dosya adlarına hash ekleyen derleme araçları genellikle .min ekini atlar.
İlgili sayfalar
- BundlerWeb Geliştirme, s. 4Bundler, 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.
- Tree ShakingWeb Geliştirme, s. 50Tree shaking, hangi ES modül dışa aktarımlarının gerçekten import edildiğine bakarak hiç kullanılmayan kodu son paketten çıkaran bir derleme optimizasyonudur.
- 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.
- CSSWeb Geliştirme, s. 11CSS, HTML içeriğinin ekranda renk, yazı tipi, boşluk, yerleşim ve animasyon gibi yönlerden nasıl görüneceğini belirleyen stil sayfası dilidir.
- 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).
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin