reactjs - 如何让源映射适用于 React Css 模块?

标签 reactjs webpack css-modules webpack-hmr react-css-modules

我正在尝试使用 react-css-modules 设置一个 React 项目, webpackHot Module Replacement 。一切都很顺利,但我无法让 CSS 源映射工作。

我关注了this guide让 HMR 发挥作用。它涉及到一个 BrowserSync 设置,用于在 Webpack 将 css 文件写入磁盘后更新该文件。

我使用(按照react-css-modules的建议)ExtractTextPlugin来提取所有的CSS:

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

但是如果我按照建议将其更改为源映射here

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

我在浏览器控制台中收到错误:“root”CSS 模块未定义。

您可以找到我的示例存储库 here ,但这是我用于开发的完整 webpack 配置。

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']
  }
};

如何使源映射工作?

最佳答案

使用这个:

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

即将 sourceMap 参数添加到 csssass 加载器中。 sass-loader docs中是这么说的.

关于reactjs - 如何让源映射适用于 React Css 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34434849/

相关文章:

reactjs - 使用本地存储在页面加载时响应重定向

reactjs - Office-JS 缺少更多 TypeScript 定义

webpack - vue.js cli 项目未加载本地字体

css - 使用 React 和 webpack 的模块

Reactjs Module CSS 多类选择器

css - 使用 css 模块,如何使用 composes 来包含颜色变量列表

javascript - 如何用 react 控制 meteor 数据流?

javascript - 带有按类别标记/突出显示的关键字的文本段落

webpack - 在 Laravel Mix 中,是否可以提取除软件包列表之外的所有 vendor ?

CSS 模块和 CSS 关键帧动画