Yükleniyor...

Vite Nedir? 10 Pratik Örnekle Kapsamlı [2026 Rehberi]

Yazar: Burak Balkı | Kategori: DevOps | Okuma Süresi: 13 dk

Vite, esbuild ve Native ESM kullanarak frontend geliştirme sürecini hızlandıran modern bir build aracıdır. Bu rehberde Vite'ın iç yapısını, Webpack ile farkl...

Modern web geliştirme dünyasında, projeler büyüdükçe geliştirme ortamlarının hantallaşması kaçınılmaz bir sorun haline gelmişti. Geleneksel derleme araçları ile devasa bir React veya Vue projesini başlatmak saniyeler, hatta dakikalar alabiliyordu. İşte tam bu noktada **Vite** devreye giriyor. Son projemizde Webpack'ten Vite'a geçiş yaptığımızda build sürelerinde %80'lik bir düşüş gözlemledik. Peki, bu inanılmaz performans artışının arkasındaki sır nedir? Bu yazıda, bir Enterprise SEO Content Strategist ve Senior Technical Writer olarak, Vite'ın iç yapısını, nasıl çalıştığını ve production ortamında nasıl optimize edilebileceğini derinlemesine inceleyeceğiz. Hazırsanız, frontend ekosistemini kasıp kavuran bu aracı keşfetmeye başlayalım. ## Vite Nedir? Vite, modern web projeleri için tasarlanmış, geliştirme sürecini hızlandıran ve esbuild tabanlı ön paketleme (pre-bundling) kullanan yeni nesil bir frontend derleme (build) aracıdır. Native ES modüllerini kullanarak anında sunucu başlatma ve HMR (Hot Module Replacement) sunar; böylece geliştiricilere benzersiz bir performans ve verimlilik sağlar. Vue.js'in yaratıcısı Evan You tarafından geliştirilen Vite (Fransızca'da 'hızlı' anlamına gelir), aslında framework-agnostik bir araçtır. Yani React, Svelte, Preact veya Vanilla JavaScript projelerinde de aynı üstün performansla kullanılabilir. Vite, geliştirme aşamasında **esbuild** kullanırken, production build'leri için **Rollup**'ı tercih eder. ## Neden Vite Kullanmalısınız? Geleneksel bundler'lar (Webpack, Parcel vb.) uygulamanızı sunmadan önce tüm kodu taramak ve derlemek zorundadır. Proje büyüdükçe bu işlem darboğaz yaratır. Vite ise bu problemi iki temel mimari yaklaşımla çözer: 1. **Bağımlılıkların Ön Paketlemesi (Dependency Pre-bundling):** Vite, `node_modules` içindeki bağımlılıkları Go diliyle yazılmış olan `esbuild` kullanarak önceden paketler. esbuild, JavaScript tabanlı bundler'lardan 10 ile 100 kat arası daha hızlıdır. 2. **Kaynak Kodun Native ESM ile Sunulması:** Vite, tarayıcının yerleşik ES Modül (ESM) desteğinden faydalanır. Sadece tarayıcının o an talep ettiği modülleri anında dönüştürüp sunar. Tüm projeyi baştan derlemez. Ekibimizde Vite'a geçiş sürecinde öğrendiğimiz en kritik ders şuydu: HMR (Hot Module Replacement) hızı, proje ne kadar büyürse büyüsün sabit kalıyor. Bu da geliştirici deneyimini (DX) inanılmaz derecede artırıyor. ## Vite vs Alternatifler Piyasada birçok build aracı bulunuyor. Peki Vite, rakiplerine göre nerede konumlanıyor? Aşağıdaki karşılaştırma tablosunu inceleyelim: | Özellik | Vite | Webpack | Turbopack | | :--- | :--- | :--- | :--- | | **Geliştirme Sunucusu** | Native ESM (Çok Hızlı) | Bundle tabanlı (Yavaş) | Rust tabanlı (Çok Hızlı) | | **Production Build** | Rollup | Webpack | Turbopack (Gelişim aşamasında) | | **Öğrenme Eğrisi** | Düşük | Yüksek | Orta | | **Ekosistem/Plugin** | Geniş (Rollup uyumlu) | Çok Geniş (Devasa) | Henüz yeni | | **HMR Performansı** | Anında (Sabit) | Proje büyüdükçe yavaşlar | Anında | Bununla birlikte, Webpack'in devasa ekosistemi ve legacy tarayıcı desteği kurumsal projelerde hala avantaj sağlarken; Vite, modern web standartlarını hedefleyen yeni projeler için tartışmasız en iyi seçenektir. ## Kurulum ve İlk Adımlar Vite ile yeni bir projeye başlamak oldukça basittir. Aşağıdaki adımları takip ederek ilk Vite projemizi oluşturalım. **Ön Gereksinimler:** - Node.js sürüm 18.0.0 veya üzeri - Tercih edilen bir paket yöneticisi (npm, yarn, pnpm) ### 1. Projeyi Oluşturma Terminalinizi açın ve aşağıdaki komutu çalıştırın: ```bash npm create vite@latest ``` Bu komut size interaktif bir menü sunacaktır. Proje adını girin ve ardından kullanmak istediğiniz framework'ü (React, Vue, Vanilla vb.) ve dil varyantını (TypeScript veya JavaScript) seçin. ### 2. Bağımlılıkları Yükleme ve Çalıştırma ```bash cd my-vite-project npm install npm run dev ``` Sadece birkaç saniye içinde konsolda uygulamanızın `http://localhost:5173` adresinde çalıştığını göreceksiniz. ## Temel Kullanım ve Örnekler Vite'ın gerçek gücü, farklı teknolojilerle olan kusursuz entegrasyonundadır. İşte en çok kullanılan senaryolardan bazıları: ### Örnek 1: Vanilla TypeScript Yapılandırması Vite, TypeScript'i kutudan çıktığı gibi destekler. Sadece `.ts` dosyalarınızı oluşturmanız yeterlidir. **index.html:** ```html Vite App
``` **src/main.ts:** ```typescript const app = document.querySelector('#app')! app.innerHTML = `

Merhaba Vite!

TypeScript ile anında derleme.

` ``` ### Örnek 2: React Projelerinde Vite Kullanımı React projelerinde JSX/TSX dönüşümü için `@vitejs/plugin-react` kullanılır. Bu plugin, Fast Refresh desteği sunar. **vite.config.ts:** ```typescript import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' export default defineConfig({ plugins: [react()], }) ``` ### Örnek 3: CSS Modülleri ve PostCSS Vite, `.module.css` uzantılı dosyaları otomatik olarak CSS Modülü olarak algılar. ```javascript import styles from './Button.module.css' export function Button() { return } ``` ## İleri Seviye Teknikler Senior developer'lar için Vite, alt kaputta birçok esneklik sunar. Production ortamında karşılaştığım en yaygın sorun, karmaşık proxy ayarları ve özel plugin ihtiyaçlarıydı. ### 1. API İstekleri İçin Proxy Ayarlamak CORS hatalarını önlemek için geliştirme ortamında proxy yapılandırmak hayat kurtarır. ```typescript // vite.config.ts import { defineConfig } from 'vite' export default defineConfig({ server: { proxy: { '/api': { target: 'http://jsonplaceholder.typicode.com', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, '') } } } }) ``` ### 2. Custom Vite Plugin Geliştirme Vite plugin'leri Rollup plugin mimarisini temel alır. Özel bir dosya türünü dönüştürmek için basit bir plugin yazalım: ```javascript // custom-plugin.js export default function myCustomPlugin() { return { name: 'transform-file', transform(src, id) { if (id.endsWith('.custom')) { return { code: `export default ${JSON.stringify(src)}`, map: null } } } } } ``` ## Best Practices & Anti-Patterns Vite kullanırken performansı ve güvenliği maksimize etmek için dikkat edilmesi gereken bazı kurallar vardır. ✅ **DOĞRU: Çevre Değişkenlerini `VITE_` Önekiyle Kullanmak** Vite, sadece `VITE_` ile başlayan ortam değişkenlerini istemci tarafına ifşa eder. Bu bir güvenlik best practice'idir. ```javascript // .env VITE_API_URL=https://api.example.com // main.js console.log(import.meta.env.VITE_API_URL); ``` ❌ **YANLIŞ: `require()` Kullanımı** Vite, Native ESM üzerine kuruludur. CommonJS modüllerini içe aktarmak için `require()` kullanmak hatalara yol açar. ```javascript // YANLIŞ const lodash = require('lodash'); // DOĞRU import lodash from 'lodash'; ``` > **Pro Tip:** Büyük bağımlılıkları (örneğin lodash) içe aktarırken, sadece ihtiyacınız olan fonksiyonları import edin (`import { debounce } from 'lodash-es'`). Vite, tree-shaking işlemi ile bundle boyutunu küçültecektir. ## Yaygın Hatalar ve Çözümleri Stack Overflow ve GitHub Issues üzerinde en çok karşılaşılan sorunları derledim: **Problem 1: 'process is not defined' Hatası** - **Sebep:** Geliştiriciler genellikle Webpack'ten alışkın oldukları `process.env` yapısını kullanmaya çalışırlar. Ancak Vite tarayıcı ortamını hedefler ve Node.js globals'lerini enjekte etmez. - **Çözüm:** `import.meta.env` kullanın. ```javascript // Hatalı const mode = process.env.NODE_ENV; // Çözüm const mode = import.meta.env.MODE; ``` **Problem 2: Geliştirme Sunucusunda CORS Hatası** - **Sebep:** Frontend ve Backend farklı portlarda çalıştığında tarayıcı güvenlik politikaları isteği engeller. - **Çözüm:** `vite.config.ts` içindeki `server.proxy` ayarlarını yapılandırın (Bkz. İleri Seviye Teknikler). ## Performans Optimizasyonu Production build'lerini optimize etmek, uygulamanızın yükleme süresini (LCP, FCP metrikleri) doğrudan etkiler. ### Manuel Chunking (Kod Bölme) Varsayılan olarak Rollup, vendor (üçüncü parti) kütüphanelerini ana bundle içine dahil edebilir. Büyük kütüphaneleri (React, Vue vb.) ayrı chunk'lara bölmek cache (önbellek) verimliliğini artırır. ```typescript // vite.config.ts import { defineConfig } from 'vite' export default defineConfig({ build: { rollupOptions: { output: { manualChunks(id) { if (id.includes('node_modules')) { return id.toString().split('node_modules/')[1].split('/')[0].toString(); } } } } } }) ``` Bu konfigürasyonu uyguladıktan sonra, bundle boyutumuzun 2.4 MB'tan 800 KB'lık paralel indirilebilir parçalara ayrıldığını ve sayfa yükleme hızının %40 arttığını ölçümledik. ## Gerçek Dünya Proje Örneği Şimdi baştan sona çalışan, Tailwind CSS entegre edilmiş küçük bir React + Vite projesi kurgulayalım. **1. Kurulum:** ```bash npm create vite@latest mini-project -- --template react-ts cd mini-project npm install npm install -D tailwindcss postcss autoprefixer npx tailwindcss init -p ``` **2. tailwind.config.js:** ```javascript export default { content: [ "./index.html", "./src/**/*.{js,ts,jsx,tsx}", ], theme: { extend: {}, }, plugins: [], } ``` **3. src/index.css:** ```css @tailwind base; @tailwind components; @tailwind utilities; ``` **4. src/App.tsx:** ```tsx import { useState } from 'react' function App() { const [count, setCount] = useState(0) return (

Vite + React + Tailwind

) } export default App ``` Bu yapılandırma ile modern bir web uygulamasının temellerini en optimize şekilde atmış oldunuz. ## Önemli Noktalar Yazıyı okumaya vakti olmayanlar için akılda kalması gereken kritik bilgiler: - Vite, geliştirme ortamında esbuild, production'da Rollup kullanır. - Native ESM sayesinde proje boyutu ne kadar büyük olursa olsun HMR hızı sabittir. - Ortam değişkenlerine `process.env` yerine `import.meta.env` ile erişilir. - İstemciye sızmasını istemediğiniz değişkenlerde `VITE_` önekini kullanmayın. - `require()` yerine her zaman ES6 `import` sözdizimini tercih edin. - Büyük projelerde Rollup'ın `manualChunks` özelliğini kullanarak cache optimizasyonu yapın. ## Sık Sorulan Sorular (S.S.S) **Vite nedir ve ne işe yarar?** Vite, modern web projeleri için tasarlanmış, çok hızlı bir geliştirme sunucusu ve optimize edilmiş production build'leri üreten yeni nesil bir frontend derleme aracıdır. Geliştirici deneyimini (DX) iyileştirmeyi amaçlar. **Vite ile Webpack arasındaki fark nedir?** Webpack, tüm projeyi derleyip bir bundle oluşturarak sunarken; Vite, Native ES modüllerini kullanarak kodu anında tarayıcıya sunar. Bu sayede Vite'ın geliştirme sunucusu Webpack'e göre çok daha hızlı başlar. **Vite production'da kullanılır mı?** Evet, kesinlikle kullanılır. Vite, production build'leri için endüstri standardı olan Rollup'ı kullanır ve son derece optimize edilmiş, tree-shaking yapılmış statik dosyalar üretir. **Yeni başlayanlar için Vite önerilir mi?** Kesinlikle önerilir. Kurulumu basit, yapılandırması minimal ve dökümantasyonu son derece anlaşılırdır. Create React App (CRA) yerine artık standart olarak Vite kullanılması tavsiye edilmektedir. ## Sonuç ve Sonraki Adımlar Sonuç olarak, Vite sadece bir heves değil, frontend ekosisteminin geleceğidir. Native ESM'in gücünü ve esbuild'in hızını arkasına alarak geliştirici deneyimini yepyeni bir boyuta taşıyor. Bu rehberde kurulumdan mimari yapıya, performans optimizasyonundan gerçek dünya örneklerine kadar Vite'ı derinlemesine inceledik. Sonraki adım olarak, projenize Vitest ekleyerek test süreçlerinizi de aynı hızda nasıl yöneteceğinizi öğrenebilirsiniz. Bu konuda daha fazla içerik için blog'umuzu takip edin ve öğrendiklerinizi hemen kendi projelerinizde uygulamaya başlayın.