express-webpack-react-redux-typescript-boilerplate icon indicating copy to clipboard operation
express-webpack-react-redux-typescript-boilerplate copied to clipboard

Enable sourceMap in devMode without FOUC

Open Armour opened this issue 6 years ago • 1 comments

I'm submitting a

  • [ ] Bug report
  • [x] Feature request
  • [ ] Performance issue
  • [ ] Regression (a behavior that used to work and stopped working in a new release)
  • [ ] Documentation issue or request
  • [ ] Other... Please describe:

Current behavior

Enable css-loader sourceMap option will cause FOUC.

Expected behavior

No FOUC when sourceMap enabled for css-loader.

Minimal reproduction of the problem with instructions

In webpack.config.base.babel.js:

...
      // Use a list of loaders to load css files
      {
        test: /\.css$/,
        use: [
          devMode ? 'style-loader' : MiniCssExtractPlugin.loader,
          { loader: 'css-loader', options: { sourceMap: !devMode, importLoaders: 1 } }, // TODO: enable sourceMap in devMode without FOUC
          { loader: 'postcss-loader', options: { sourceMap: true, plugins: () => [postcssImport, postcssPresetEnv, cssnano] } },
        ],
      },
      // Use a list of loaders to load scss files
      {
        test: /\.scss$/,
        use: [
          devMode ? 'style-loader' : MiniCssExtractPlugin.loader,
          { loader: 'css-loader', options: { sourceMap: !devMode, importLoaders: 2 } }, // TODO: enable sourceMap in devMode without FOUC
          { loader: 'postcss-loader', options: { sourceMap: true, plugins: () => [postcssImport, postcssPresetEnv, cssnano] } },
          { loader: 'sass-loader', options: { sourceMap: true } },
        ],
      },
...

simply change !devMode to true will cause the FOUC.

What is the motivation / use case for changing the behavior?

SourceMap support in development.

Armour avatar Jul 26 '18 03:07 Armour

Related: https://github.com/webpack-contrib/css-loader/issues/613 https://github.com/facebook/create-react-app/pull/3202

Armour avatar Jul 26 '18 03:07 Armour