इसके मूल में, वेबपैक केवल एक फ़ाइल बंडल है। एक बहुत ही सरल परिदृश्य (कोड विभाजन नहीं) को ध्यान में रखते हुए, इसका मतलब सिर्फ निम्नलिखित क्रियाओं (उच्च स्तर पर) हो सकता है:
- प्रविष्टि फ़ाइल ढूंढें और इसकी सामग्री को मेमोरी में लोड करें
- सामग्री के भीतर कुछ पाठ का मिलान करें और उन लोगों का मूल्यांकन करें (उदाहरण के लिए @import)
- पिछले मूल्यांकन के आधार पर निर्भरता पाते हैं और उनके साथ भी ऐसा ही करते हैं
- स्मृति में एक बंडल में उन सभी को सिलाई
- फाइल सिस्टम के लिए परिणाम लिखें
जब आप उपरोक्त चरणों की बारीकी से जांच करते हैं, तो यह एक जावा संकलक (या कोई संकलक) के साथ प्रतिध्वनित होता है। पाठ्यक्रम के अंतर हैं, लेकिन लोडर और प्लगइन्स को समझने में कोई फर्क नहीं पड़ता।
लोडर:
यहाँ हैं क्योंकि वेबपैक किसी भी फ़ाइल प्रकार को एक साथ बंडल करने का वादा करता है।
चूंकि इसके मूल में वेबपैक केवल js फ़ाइलों को बंडल करने के लिए पर्याप्त सक्षम है, इसलिए इस वादे का अर्थ था कि वेबपैक कोर टीम को बिल्ड फ़्लो को शामिल करना था जो बाहरी कोड को एक विशेष फ़ाइल प्रकार को इस तरह से बदलने की अनुमति देता है कि वेबपैक उपभोग कर सकता है।
इन बाहरी कोड को लोडर कहा जाता है और वे आमतौर पर चरण 1 और 3 के ऊपर चलते हैं। इस प्रकार, चूंकि जिस चरण पर इन लोडरों को चलाने की आवश्यकता होती है वह स्पष्ट है, उन्हें हुक की आवश्यकता नहीं होती है और न ही वे निर्माण प्रक्रिया को प्रभावित करते हैं (क्योंकि निर्माण या बंडल केवल चरण 4 पर होता है)।
इसलिए लोडर संकलन के लिए मंच तैयार करते हैं और वे वेबपैक कंपाइलर के लचीलेपन का विस्तार करते हैं।
प्लग-इन:
यहाँ हैं क्योंकि भले ही वेबपैक सीधे चर उत्पादन का वादा नहीं करता है, दुनिया इसे चाहती है और वेबपैक इसकी अनुमति देता है।
चूंकि इसके मूल में वेबपैक सिर्फ एक बंडल है और फिर भी ऐसा करने में कई चरणों और उप-चरणों से गुजरता है, इसलिए इन चरणों का उपयोग अतिरिक्त कार्यक्षमता में निर्माण के लिए किया जा सकता है।
उत्पादन निर्माण प्रक्रिया (फाइल सिस्टम के लिए मीनिंग और लेखन), जो कि उदाहरण के लिए, वेबपैक कंपाइलर की एक देशी क्षमता है, को इसकी मूल क्षमता (जो कि अभी बंडल है) के विस्तार के रूप में माना जा सकता है और इसे एक देशी प्लगइन की तरह माना जा सकता है। अगर वे इसे प्रदान नहीं करते, तो कोई और करता।
ऊपर दिए गए देशी प्लगिन को देखकर ऐसा प्रतीत होता है जैसे कि वेबपैक बंडलिंग या संकलन को कोर बंडलिंग प्रक्रिया में तोड़ा जा सकता है, साथ ही बहुत सारे देशी प्लगइन प्रक्रियाएँ जिन्हें हम बंद या अनुकूलित या विस्तारित कर सकते हैं। इसका मतलब बाहरी कोड को विशिष्ट बिंदुओं पर बंडलिंग प्रक्रिया में शामिल होने की अनुमति देना है जिसे वे (हुक कहा जाता है) से चुन सकते हैं।
इसलिए प्लगइन्स वेबपैक कंपाइलर की क्षमता को बढ़ाने के लिए आउटपुट और सॉर्ट को प्रभावित करते हैं।