2015-12-23 4 views
12

मैं react-css-modules, webpack और Hot Module Replacement के साथ एक प्रतिक्रिया प्रोजेक्ट सेट करने का प्रयास कर रहा हूं। सब कुछ एक आकर्षण की तरह काम कर रहा है लेकिन मुझे काम करने के लिए सीएसएस स्रोत नहीं मिल सकता है।रिएक्ट सीएसएस मॉड्यूल के लिए काम कर रहे स्रोतमैप कैसे प्राप्त करें?

मैंने एचएमआर काम करने के लिए this guide का पालन किया। Webpack डिस्क पर लिखने के बाद इसमें css फ़ाइल को अपडेट करने के लिए ब्राउज़र Sync सेटअप शामिल है।

ExtractTextPlugin (के रूप में प्रतिक्रिया-सीएसएस-मॉड्यूल ने सुझाव दिया) मैं का उपयोग सीएसएस के सभी निकालने के लिए:

{ 
    test: /\.scss$/, 
    loader: ExtractTextPlugin.extract('style','css?modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]!sass') 
} 

लेकिन अगर मैं sourcemaps को यह बदलने के लिए, के रूप में सुझाव here

loader: ExtractTextPlugin.extract('style', 'css?sourceMap!sass-loader outputStyle=expanded&sourceMap=true&sourceMapContents=true') 

मुझे त्रुटि मिलती है: "root" CSS module is undefined. मेरे ब्राउज़र कंसोल में।

आप मेरा उदाहरण रेपो here पा सकते हैं, लेकिन यहां पूर्ण वेबपैक कॉन्फ़िगरेशन है जिसका उपयोग मैं विकास के लिए कर रहा हूं।

var webpack = require('webpack'); 
var path = require('path'); 
var ExtractTextPlugin = require('extract-text-webpack-plugin'); 
var WriteFilePlugin = require('write-file-webpack-plugin').default; 

module.exports = { 
    entry: { 
    bundle: [ 
     'webpack/hot/dev-server', 
     'webpack-hot-middleware/client', 
     './index.js' 
    ] 
    }, 
    devtool: 'cheap-module-source-map', 
    debug: true, 
    devServer: devServer, 
    context: path.resolve(__dirname, './src'), 
    output: { 
    path: path.resolve(__dirname, './builds'), 
    filename: '[name].js', 
    publicPath: '/builds/' 
    }, 
    plugins: [ 
    new webpack.HotModuleReplacementPlugin(), 
    new webpack.OldWatchingPlugin(), 
    new WriteFilePlugin(), 
    new ExtractTextPlugin('[name].css', { 
     allChunks: true 
    }) 
    ], 
    module: { 
    loaders: [ 
     { 
     test: /\.js$/, 
     loaders: ['react-hot', 'babel-loader'], 
     exclude: /node_modules/ 
     }, 
     { 
     test: /\.scss$/, 
     loader: ExtractTextPlugin.extract('style','css?modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]!sass') 
     } 
    ] 
    }, 
    resolve: { 
    extensions: ['', '.js', '.json'] 
    } 
}; 

स्रोतमैप कैसे काम करें?

+0

शायद मूर्खतापूर्ण आवाज हो सकती है, लेकिन इसके बारे में क्या? 'ExtractTextPlugin.extract ('शैली', 'सीएसएस? स्रोत मैप और मॉड्यूल और आयात लोडर = 1 और स्थानीय आईडी नाम = [नाम] __ [स्थानीय] ___ [हैश: बेस 64: 5]! एसएएस? स्रोत मैप')' – Louy

+0

$ @ ## और $ me .. वह है वास्तव में काम कर रहा है। मैं कसम खाता हूँ कि मैंने कोशिश की है ... फिर भी बहुत बहुत धन्यवाद। क्या आप इसे एक उत्तर के रूप में जोड़ सकते हैं ताकि मैं आपको इनाम दे सकता हूं? – Tieme

+0

कुछ दस्तावेज भी जोड़ा गया। https://github.com/gajus/react-css-modules/pull/72 :) – Tieme

उत्तर

8

इस का उपयोग करें:

ExtractTextPlugin.extract('style','css?sourceMap&modules&importLoaders=1&localI‌​dentName=[name]__[local]___[hash:base64:5]!sass?sourceMap') 

अर्थात दोनों css & sass लोडर में जोड़ने sourceMap परम। यह sass-loader docs में ऐसा कहा।

2

यह कैसे मैं अपने सीएसएस मॉड्यूल की स्थापना की है है:

'css-loader?modules&sourceMap&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]!', 
+0

यह तब तक काम करेगा जब तक आप प्रतिक्रिया-सीएसएस-मॉड्यूल का उपयोग नहीं करते हैं या उन मॉड्यूल के गर्म पुनः लोडिंग की आवश्यकता नहीं है। उन मामलों में आपको ExtractTextPlugin की आवश्यकता है। – Tieme

+0

@Tieme Thats सच नहीं है। इस गलतफहमी को फैलाने के लिए मैं क्षमा चाहता हूं। मैंने दस्तावेज़ों को अपडेट किया (https://github.com/gajus/react-css-modules#webpack) और संबंधित विषय पर चर्चा धागा को अद्यतन किया (https://github.com/gajus/react-css-modules/issues/51 # issuecomment-181,660,058)। – Gajus

+0

धन्यवाद! कोई बात नहीं :) – Tieme

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