2016-10-17 7 views
6

NoErrorsPlugin दस्तावेज़ पढ़ने के बाद।वेबपैक 'NoErrorsPlugin` का उपयोग कब करें?

जब इस प्लगइन को संकलित करते समय त्रुटियां होती हैं तो उत्सर्जन चरण (और रिकॉर्डिंग चरण) छोड़ देता है, इसलिए कोई भी संपत्ति उत्सर्जित नहीं होती है जिसमें त्रुटियां शामिल होती हैं।

अभी भी समझ में नहीं आता है। इसका इस्तेमाल कैसे करें?

मैंने syntax error बनाया, लेकिन ऐसा लगता है कि NoErrorsPlugin सक्षम करने से पहले कुछ अलग नहीं है।

उत्तर

1

मुझे लगता है कि NoErrorsPlugin वेबपैक बिल्ड प्रक्रिया में उपयोग किया जाता है।

मेरे पास इस प्लगइन का उपयोग करने के लिए एक परिदृश्य है। अगर प्रोजेक्ट एस्लिंट/एस्लिंट-लोडर का उपयोग करता है, तो ईएसलिंट चेतावनियां बिल्ड विफल हो जाएंगी। लेकिन बंडल उत्सर्जित किया जाएगा।

NoErrorsPlugin एक बंडल में कुछ भी outputting से Webpack से बचाता है। तो ईएसलिंट चेतावनियां भी निर्माण में असफल हो जाएंगी। कोई फर्क नहीं पड़ता कि एस्लिंट लोडर के लिए त्रुटि सेटिंग्स का उपयोग किया जाता है।

संदर्भ: https://github.com/MoOx/eslint-loader#gotchas

तो हम NoErrorsPlugin उत्पादन env में उपयोग कोई त्रुटि निर्माण रखने के लिए कर सकते हैं।

+0

हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन यहां उत्तर के आवश्यक हिस्सों को शामिल करना बेहतर है और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक किए गए पृष्ठ में परिवर्तन होने पर लिंक-केवल उत्तर अमान्य हो सकते हैं। - [समीक्षा से] (/ समीक्षा/कम गुणवत्ता वाली पोस्ट/14339101) – Dmitry

+0

आपके सुझाव के लिए धन्यवाद! मैंने जवाब का आवश्यक हिस्सा जोड़ा है। –

7

मैं जवाब पढ़ रहा था, लेकिन अभी भी इसे प्राप्त नहीं किया गया है। जो मुझे मिला वह यहां है।

webpack.NoErrorsPlugin() एक वैकल्पिक प्लगइन है कि reloader बताता है यदि कोई त्रुटि होती है फिर से लोड नहीं है। त्रुटि को कंसोल में मुद्रित किया गया है, और पृष्ठ पुनः लोड नहीं होता है। यदि आपके पास यह प्लगइन सक्षम नहीं है और आपको कोई त्रुटि है, तो मृत्यु की एक लाल स्क्रीन फेंक दी गई है।

कॉपी here

5

से के बाद से इस विषय में webpack प्रलेखन विरल बनी हुई है, के स्रोत कोड को देखो, https://github.com/webpack/webpack/tree/master/lib/NoErrorsPlugin.js:

let deprecationReported = false; 
 

 
class NoErrorsPlugin { 
 
\t apply(compiler) { 
 
\t \t compiler.plugin("should-emit", (compilation) => { 
 
\t \t \t if(!deprecationReported) { 
 
\t \t \t \t compilation.warnings.push("webpack: Using NoErrorsPlugin is deprecated.\n" + 
 
\t \t \t \t \t "Use NoEmitOnErrorsPlugin instead.\n"); 
 
\t \t \t \t deprecationReported = true; 
 
\t \t \t } 
 
\t \t \t if(compilation.errors.length > 0) 
 
\t \t \t \t return false; 
 
\t \t }); 
 
\t \t compiler.plugin("compilation", (compilation) => { 
 
\t \t \t compilation.plugin("should-record",() => { 
 
\t \t \t \t if(compilation.errors.length > 0) 
 
\t \t \t \t \t return false; 
 
\t \t \t }); 
 
\t \t }); 
 
\t } 
 
} 
 

 
module.exports = NoErrorsPlugin;

अब के लिए प्रतिवाद पहलू पर ध्यान न दें । यह कोड यहां एक दस्तावेज़ के रूप में एक वेबपैक प्लगइन है: https://webpack.js.org/api/plugins। यह ईवेंट हुक should-emit और compilation का उपयोग करता है, जो यहां दस्तावेज़ित हैं: https://webpack.js.org/api/plugins/compiler/#event-hooks। मुझे should-record हुक नहीं मिला, लेकिन ऐसा लगता है: https://webpack.js.org/api/plugins/compilation/#record-compilation-records-

तो हम सारांशित कर सकते हैं: यदि त्रुटियां हैं, तो प्लगइन लक्ष्य कोड के उत्सर्जन को दबाता है, और "संकलन के बारे में जानकारी संग्रहीत करता है"। मैंने वेबपैक कॉन्फ़िगरेशन में प्लगइन को टॉगल करके और आउटपुट बंडल के टाइम स्टैंप की निगरानी करके, एक प्रतिक्रिया ऐप के साथ इसे सत्यापित किया।

बहिष्कार के बारे में: उसी गीटहब निर्देशिका में, "NoEmitOnErrorsPlugin.js" भी है, जो "NoErrorsPlugin.js" जैसा दिखता है, केवल बिना बहिष्करण के। इसलिए, अगर हम कोड उत्सर्जन को दबाना चाहते हैं, तो हमें नई प्लगइन का उपयोग करना चाहिए।

संबंधित मुद्दे