मैं एक वेबपैक प्लगइन पर काम कर रहा हूं और निर्माण के दौरान मॉड्यूल को संशोधित करने का तरीका नहीं समझ सकता। मुझे क्या करना कोशिश कर रहा हूँ:वेबपैक प्लगइन: संकलन के बाद मैं मॉड्यूल को कैसे संशोधित और पुन: पार्स कर सकता हूं?
- कलेक्ट डेटा एक कस्टम लोडर के माध्यम से (ठीक)
- के बाद सभी मॉड्यूल लोड किया गया है, मेरी लोडर (ठीक)
- सम्मिलित कोड मैं में उत्पन्न द्वारा एकत्रित डेटा एकत्र निर्माण में एक मौजूदा मॉड्यूल (नीचे वर्णित अनुसार यह सुनिश्चित करना, यह सुनिश्चित नहीं है कि यह सबसे अच्छा तरीका है)
- उस मॉड्यूल को 'अपडेट करें' ताकि कोड जो मैंने जोड़ा है उसे पार्स हो जाता है और इसकी 'वेबपैक में बदलना आवश्यक है कॉल (कर सकते हैं' यह सही ढंग से करने के तरीके को समझें)
वर्तमान में मैं संकलक पर 'इस संकलन' में शामिल हूं, फिर संकलन पर 'अतिरिक्त-खंड-संपत्ति'। पहले खंड को पकड़ना (केवल एक, वर्तमान में, जैसा कि मैं अभी भी विकास में हूं), उस खंड में मॉड्यूल के माध्यम से पुन: सक्रिय करना जिसे मैं संशोधित करना चाहता हूं। तब:
- मॉड्यूल के _cachedSource.source._source._value करने के लिए अपने उत्पन्न स्रोत जोड़
- रिक्त स्ट्रिंग पर ._cachedSource.hash की स्थापना (के रूप में (मैं भी मॉड्यूल के ._source._value को जोड़कर की कोशिश की) इस अगले कदम के काम करने के लिए आवश्यक हो)
- मैं .rebuildModule()
यह rebuildModule तरह लग रहा है चाहिए स्रोत फिर से पार्स, पुन: स्थापित निर्भरता, आदि आदि के लिए मॉड्यूल पारित लगता है , लेकिन यह मेरे आवश्यक बयानों को पार्स नहीं कर रहा है और उन्हें वेबपैक में बदलना आवश्यक है। निर्मित फ़ाइल में मेरे संशोधित स्रोत शामिल हैं लेकिन आवश्यकताएं ('...') कथन असम्बद्ध हैं।
मैं मॉड्यूल को कैसे 'अपडेट' संशोधित कर सकता हूं ताकि वेबपैक मेरे अतिरिक्त स्रोत को मूल रूप से पार्स किए गए स्रोत के समान व्यवहार कर सके? क्या पुनर्निर्माण मॉड्यूल() के अलावा मुझे कुछ करने की ज़रूरत है? क्या मैं इस प्रक्रिया को निर्माण प्रक्रिया में बहुत देर से कर रहा हूं? या क्या मैं इसके बारे में गलत तरीके से जा रहा हूं?
तो ऊपर उल्लिखित दृष्टिकोण में प्रमुख सीमाएं हैं। यह ठीक काम करता है अगर आपको मॉड्यूल के स्रोत में मनमाने ढंग से कोड इंजेक्ट करने की आवश्यकता है। हालांकि, पार्सिंग पहले से संकलित मॉड्यूल के साथ अच्छा नहीं लग रहा है, उदा। यह पहले से ही बंडल निर्भरताओं में एक मॉड्यूल के लिए 'आवश्यकता' पहचान नहीं पाएगा। तो यह एक निर्माण में बदलावों को लागू करने के लिए एक अच्छा समाधान नहीं है जब तक कि (शायद) नया कोड वेबपैक की सुविधाओं का उपयोग नहीं करता है। –
दिलचस्प दृष्टिकोण। लेकिन वेबपैक के बैनरप्लगिन का उपयोग क्यों न करें? –
@EviSong ने बैनरप्लगिन में बहुत कुछ नहीं देखा है, लेकिन उपयोग का मामला बिल्ड प्रक्रिया के दौरान कुछ नया स्रोत प्राप्त कर रहा था और उसके बाद इसे सभी मॉड्यूल को पार्स किए जाने के बाद निर्माण में डालने वाला था। इसलिए कोड डालने तक ज्ञात नहीं होगा संकलन के बाद, समय का निर्माण। –