मुझे वह पहला समय याद है जब मैंने एक प्रोजेक्ट को CRA (जो अंदर से Webpack उपयोग करता है) से Vite में स्विच किया था। Dev सर्वर एक सेकंड से भी कम समय में शुरू हो गया। मैं सच में कुछ देर टर्मिनल को देखता रहा, कुछ और होने का इंतज़ार करते हुए। कुछ नहीं हुआ। बस यही था — यह तैयार था। यह Webpack की तुलना में कोई छोटा सुधार नहीं है। यह एक पूरी तरह से अलग अनुभव है।
Vite क्या है?
Vite (फ्रेंच में “तेज़” का अर्थ, उच्चारण “वीट”) एक फ्रंटएंड बिल्ड टूल है जिसे Evan You ने बनाया है — वही व्यक्ति जिसने Vue.js बनाया था [1]। इसे 2020 में लॉन्च किया गया था और यह तेज़ी से बढ़ रहा है। 2025 तक, Vite प्रति सप्ताह 53 मिलियन npm डाउनलोड दर्ज करता है, जबकि Webpack के 36 मिलियन हैं [5]। इसके GitHub स्टार्स भी यही कहानी बताते हैं: 78,000 बनाम Webpack के 66,000 [5]।
हर बिल्ड टूल के दो मुख्य काम होते हैं:
- हॉट मॉड्यूल रिप्लेसमेंट (HMR) के साथ लोकल डेवलपमेंट के दौरान आपका कोड सर्व करना
- प्रोडक्शन के लिए आउटपुट को बंडल और ऑप्टिमाइज़ करना
Vite और Webpack दोनों यह काम करते हैं। कैसे एकदम अलग है — और यही अंतर है जो एक को मिलीसेकंड में शुरू करता है और दूसरे में आपको इंतज़ार करवाता है।
Webpack धीमा क्यों हो जाता है
Webpack का दृष्टिकोण सरल लेकिन महंगा है: पहले सब कुछ बंडल करें, फिर सर्व करें। ब्राउज़र एक भी पिक्सेल देखे इससे पहले, Webpack आपके प्रोजेक्ट की हर फ़ाइल पढ़ता है, हर इम्पोर्ट चेन को रिज़ॉल्व करता है, सब कुछ कंपाइल करता है, और एक बड़ा bundle.js आउटपुट करता है। एक मध्यम आकार का React ऐप केवल कोल्ड-स्टार्ट के लिए 15–30 सेकंड ले सकता है [1]।
यह 2014 में समझ में आता था। उस समय ब्राउज़र ES मॉड्यूल को नेटिव रूप से नहीं संभाल सकते थे — आपको उन्हें एक प्री-प्रोसेस्ड फ़ाइल देनी होती थी। Webpack उस दुनिया के लिए बनाया गया था। समस्या यह है कि यह अभी भी काफी हद तक उसी तरह काम करता है, भले ही ब्राउज़रों ने वर्षों से नेटिव ESM को सपोर्ट किया हो।
HMR एक और दर्द का बिंदु है। जब आप एक फ़ाइल बदलते हैं, तो Webpack आंशिक रूप से बंडल को फिर से बनाता है। बड़े प्रोजेक्ट्स पर, छोटे बदलाव भी आपको परिवर्तन दिखाने से पहले 2–5 सेकंड ले सकते हैं। यह फीडबैक लूप ध्यान को मारता है।
कॉन्फ़िगरेशन की जटिलता एक और समस्या है। मैंने ऐसे Webpack कॉन्फ़िग इनहेरिट किए हैं जो 400+ लाइन लंबे थे, लोडर्स, प्लगइन्स, और एनवायरनमेंट-स्पेसिफिक ओवरराइड्स के साथ जिन्हें कोई पूरी तरह नहीं समझता था। State of JavaScript सर्वे के अनुसार, 86% डेवलपर्स अभी भी Webpack उपयोग करते हैं, लेकिन केवल 14% वास्तव में इसे पसंद करते हैं [8]।
Vite वास्तव में कैसे काम करता है
Vite एक मूलभूत दांव लगाता है: आधुनिक ब्राउज़र ES मॉड्यूल को नेटिव रूप से समझते हैं, इसलिए डेवलपमेंट के दौरान बंडल मत करो।
जब ब्राउज़र आपके कोड में कोई import देखता है, तो यह Vite dev सर्वर को एक रिक्वेस्ट भेजता है। Vite उस रिक्वेस्ट को इंटरसेप्ट करता है, esbuild — एक Go में लिखा बंडलर जो JavaScript-आधारित समकक्षों से लगभग 10–100× तेज़ है — का उपयोग करके सिर्फ उस एक फ़ाइल को ट्रांसफॉर्म करता है (TypeScript, JSX, जो भी हो) और इसे वापस करता है [3]।
एक बात है: node_modules में तृतीय-पक्ष पैकेज अक्सर ESM नहीं, CommonJS होते हैं। और कुछ लाइब्रेरी में सैकड़ों आंतरिक इम्पोर्ट होते हैं जो सैकड़ों HTTP रिक्वेस्ट बना देते। इसलिए Vite स्टार्टअप पर एक बार esbuild का उपयोग करके डिपेंडेंसी को प्री-बंडल करता है, उन्हें ESM में कनवर्ट करता है, और उन्हें कैश करता है। यह चरण मिलीसेकंड में होता है [1]। उसके बाद, आपकी ऐप सोर्स फ़ाइलें मांग पर सर्व की जाती हैं — बिल्कुल बंडलिंग चरण के बिना।
Vite में HMR प्रोजेक्ट बढ़ने के साथ भी तेज़ रहता है। जब आप एक फ़ाइल बदलते हैं, तो Vite केवल उस मॉड्यूल और उसके प्रत्यक्ष निर्भरों को इनवैलिडेट करता है। यह किसी और चीज़ को नहीं छूता। HMR बाउंड्री लॉजिक सटीक है। यही कारण है कि Vite का HMR एक 10-फ़ाइल प्रोजेक्ट में तत्काल महसूस होता है और 500-फ़ाइल प्रोजेक्ट में भी तत्काल महसूस होता है — Webpack के विपरीत, जहाँ HMR गति कोडबेस बढ़ने के साथ घटती है [3]।
Vite बनाम Webpack — साथ-साथ
| Vite | Webpack | |
|---|---|---|
| Dev सर्वर कोल्ड स्टार्ट | < 1 सेकंड | 15–30s (मध्यम ऐप) |
| HMR गति | किसी भी स्केल पर तत्काल | प्रोजेक्ट साइज़ के साथ घटती है |
| शुरू करने के लिए कॉन्फ़िग | ~10 लाइनें | अक्सर 100s लाइनें |
| प्रोडक्शन बंडलर | Rollup / Rolldown | Webpack |
| बंडल साइज़ (औसत) | ~130 KB | ~150 KB |
| साप्ताहिक npm डाउनलोड | 53 मिलियन | 36 मिलियन |
| सबसे अच्छा किसके लिए | नए प्रोजेक्ट्स, आधुनिक स्टैक | लीगेसी ऐप्स, एंटरप्राइज़, कस्टम लोडर्स |
स्रोत: [2][5]
Shopify ने Webpack से Vite में कई आंतरिक टूल्स माइग्रेट किए और ~12 सेकंड के स्टार्टअप से 800 मिलीसेकंड से कम में आ गए [2]। यह ऑप्टिमाइज़ेशन नहीं है। यह एक अलग आर्किटेक्चर है।
Vite 8 और Rolldown — अगला कदम
Vite में हमेशा एक विभाजित व्यक्तित्व रहा है: डेवलपमेंट ट्रांसफॉर्म के लिए esbuild, प्रोडक्शन बिल्ड के लिए Rollup। वे अलग-अलग टूल हैं जिनके अलग-अलग व्यवहार हैं। इससे कभी-कभी सूक्ष्म बग होते थे — ऐसी चीज़ें जो dev में काम करती थीं लेकिन प्रोडक्शन में टूट जाती थीं, या इसके विपरीत।
अब इसे Rolldown के साथ संबोधित किया जा रहा है — VoidZero (Evan You की कंपनी) द्वारा विकसित एक Rust-आधारित बंडलर जो दोनों को रिप्लेस करने के लिए बनाया गया है [6]। 2026 में रिलीज़ Vite 8, Rolldown को डिफ़ॉल्ट प्रोडक्शन बंडलर के रूप में शिप करता है, जो dev और prod दोनों बिल्ड को समान अंतर्निहित इंजन देता है [7]।
प्रारंभिक प्रोडक्शन बिल्ड परिणाम:
- Excalidraw: 22.9s → 1.4s (16× तेज़) [8]
- GitLab: 2.5 मिनट → 40 सेकंड [8]
- सामान्य बेंचमार्क दावे: पिछले Rollup पाइपलाइन की तुलना में 10–30× तेज़ प्रोडक्शन बिल्ड [7]
Dev/prod समानता की समस्या भी दूर हो जाती है। यह वर्षों से बग का एक कम महत्व दिया गया स्रोत रहा है।
क्या Vite अंततः Webpack जैसा बन जाएगा?
यही वह बात है जो हर कोई सोच रहा है लेकिन सीधे नहीं कह रहा। Webpack शुरुआत में उस राक्षस जैसा नहीं था जो वह बना। यह बढ़ा। टीमों ने लोडर्स जोड़े, कस्टम प्लगइन लिखे, एनवायरनमेंट-स्पेसिफिक ओवरराइड्स की परतें चढ़ाईं, और लीगेसी वर्कअराउंड छोड़े जिन्हें हटाने की किसी की हिम्मत नहीं थी। बीस कॉन्फ़िग फ़ाइलें और एक सीनियर इंजीनियर जो “बिल्ड सेटअप जानता है” — जो हर मध्यम आकार की कंपनी ने अनुभव किया है।
क्या Vite उसी रास्ते पर चल सकता है? ईमानदारी से कहें तो, एक हद तक — हाँ। बड़ी टीमें बड़े कॉन्फ़िग बनाएंगी। SSR सेटअप में पहले से एज केस हैं। एंटरप्राइज़ प्रोजेक्ट्स Vite 6+ में नए Environment API को उन तरीकों से पुश करेंगे जिनके लिए गहरे Vite ज्ञान की आवश्यकता है [5]।
लेकिन एक संरचनात्मक कारण है कि शायद यह उतना बुरा नहीं होगा। Webpack की जटिलता काफी हद तक आकस्मिक थी — पुराने ब्राउज़रों के लिए कम्पैटिबिलिटी लेयर, CommonJS-से-ESM कनवर्शन, हज़ार प्लगइन जो एज केस पैच कर रहे थे जिन्हें नेटिव टूलिंग ने अब हल कर दिया है। Vite बस आधुनिक एनवायरनमेंट की आवश्यकता करके इसमें से अधिकांश को बाईपास करता है। यह “इस अजीब लीगेसी चीज़ के लिए मुझे एक कस्टम लोडर चाहिए” की एक पूरी श्रेणी को काट देता है।
Vite का प्लगइन सिस्टम Rollup के API का एक जानबूझकर सुपरसेट है [1]। एक नया कॉन्फ़िग फ़ॉर्मेट आविष्कार करने के बजाय, यह एक अच्छी तरह से समझे गए इंटरफ़ेस का पुनः उपयोग करता है। यह एक अच्छा संकेत है — इसका मतलब है कि इकोसिस्टम ज्ञान स्थानांतरित होता है बजाय अलगाव में जमा होने के।
Vite जो जटिलता जमा करेगा वह ज्यादातर जानबूझकर होगी — उन्नत उपयोगकर्ता कस्टम SSR पाइपलाइन, मल्टी-एनवायरनमेंट सेटअप, या फ्रेमवर्क-स्तरीय टूलिंग बना रहे हैं। यह एक अलग प्रकार की गड़बड़ी है। आप आमतौर पर एक Vite कॉन्फ़िग को समझ सकते हैं जो आपने नहीं लिखा। यही बात अधिकांश इनहेरिटेड Webpack कॉन्फ़िग के बारे में नहीं कही जा सकती जिन्हें मैंने छुआ है।
क्या Vite पाँच साल में उतना डरावना दिखेगा जितना Webpack आज दिखता है — मुझे संदेह है। लेकिन “Webpack जितना बुरा नहीं” अभी भी बहुत जगह छोड़ता है।
समाप्त
स्रोत
- Vite क्यों — Vite आधिकारिक डॉक्स
- 2025 में React ऐप्स के लिए Vite बनाम Webpack: एक सीनियर इंजीनियर का नज़रिया — LogRocket
- Vite का मूल जादू: esbuild और नेटिव ESM फ्रंटएंड डेवलपमेंट को कैसे फिर से आविष्कार करते हैं — Leapcell
- Vite बनाम Webpack: एक आमने-सामने तुलना — Kinsta
- Webpack बनाम Vite: आधुनिक फ्रंटएंड डेवलपमेंट के लिए सही बंडलर चुनना — Syncfusion
- Rolldown-Vite की घोषणा — VoidZero
- Vite संस्करण 8: एकीकृत Rust-आधारित बंडलर और 30× तक तेज़ बिल्ड — InfoQ
- Rolldown-Vite बीटा: Rust-संचालित बंडलर बिल्ड समय को 16× तक कम करता है — Progosling