2016-07-13 13 views
5

मैं index.html में एक चर कि इस तरह दिखता है बदलने के लिए कोशिश कर रहा हूँ में स्ट्रिंग-बदलें-लोडर के साथ एचटीएमएल-webpack-प्लगइन:उपयोग webpack

{ 
    test: /index\.html$/, 
    loader: 'string-replace', 
    query: { 
     search: '$variable', 
     replace: 'stuff to inject', 
    }, 
    } 

loaders सरणी में, और उसके बाद plugins में:

new HtmlWebpackPlugin({ 
    template: conf.path.src('src/index.html'), 
    inject: true, 
}) 
में

लेकिन इस सेटिंग परिणाम:

ERROR in ./~/html-webpack-plugin/lib/loader.js!./src/index.html Module parse failed (...) Unexpected token (1:0) You may need an appropriate loader to handle this file type.

तुम क्या इस कारण हो सकता है या मैं यह कैसे डीबग कर सकते हैं किसी भी विचार है?

+0

डीबगिंग के लिए मैं [लोहे-नोड] (https://github.com/sa/iron-node) का उपयोग कर रहा हूं जो नोड मॉड्यूल – jantimon

उत्तर

5

यह string-replace-plugin की वजह से एक स्ट्रिंग को निर्यात करने वाले मॉड्यूल की अपेक्षा करता है। आपको HTML फ़ाइल को CommonJS मॉड्यूल में कनवर्ट करना चाहिए।

उदाहरण के लिए, इस raw-loader का उपयोग करके तरीका है:

पहले html में सामग्री की विशेषता के लिए उद्धरण जोड़ने

<meta name='author' content='$variable'>` 

और

{ 
    test: /index\.html$/, 
    loader: 'string-replace?search=$variable&replace=stuff to inject!raw' 
    } 
+0

पर डीबगर स्टेटमेंट जोड़ने की अनुमति देता है - क्या आपको लगता है कि हम एचटीएमएल- वेबपैक-प्लगइन किसी भी तरह त्रुटि संदेश में सुधार करने के लिए? – jantimon

+0

धन्यवाद! मैंने HTML लोडर – wap300

1

Konstantin का जवाब ठीक काम करता है और है अच्छा अगर आप एक मूल्य को प्रतिस्थापित करना चाहते हैं। मैं एक से अधिक मान को बदलने के लिए करना चाहता था तो मेरे loaders सरणी

{ 
    test: /\.html$/, 
    loader: 'raw' 
    }, 
    { 
    test: /\.html$/, 
    loader: 'string-replace', 
    query: { 
     multiple: [ 
     {search: '$variable1', replace: 'replacement 1'}, 
     {search: '$variable2', replace: 'replacement 2'} 
     ] 
    } 
    } 

कुंजी परिवर्तन पहले raw लोडर के माध्यम से अपने html फ़ाइल को चलाने के लिए है करने के लिए निम्न जोड़ा, और फिर आप string-replace-loader के लिए सभी सामान्य config उपयोग कर सकते हैं।

+1

का उपयोग करके इस पर भी काम किया है यह वेबपैक 1.X में काम करता है लेकिन मुझे लगता है कि यह वेबपैक 2 और 3 के साथ काम नहीं कर रहा है। – SharpCoder

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