react-app-rewire-wolox
Version:
Add CSS Modules + SASS and Babel config Webpack config to a [`react-app-rewired`](https://github.com/timarney/react-app-rewired) config.
55 lines (36 loc) • 2.23 kB
JavaScript
"use strict";
var _extractTextWebpackPlugin = require("extract-text-webpack-plugin");
var _extractTextWebpackPlugin2 = _interopRequireDefault(_extractTextWebpackPlugin);
var _loaders = require("./loaders");
var _loaders2 = _interopRequireDefault(_loaders);
var _utils = require("./utils");
var _utils2 = _interopRequireDefault(_utils);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
var rewireReactHotLoader = require("react-app-rewire-hot-loader");
var eslintLoaderMatcher = _utils2.default.createLoaderMatcher("eslint-loader");
var babelLoaderMatcher = _utils2.default.createLoaderMatcher("babel-loader");
var fileLoaderMatcher = _utils2.default.createLoaderMatcher("file-loader");
var cssFilename = "static/css/[name].[contenthash:8].css";
module.exports = function override(config, env) {
var eslintRule = _utils2.default.findRule(config.module.rules, eslintLoaderMatcher);
var _eslintRule$options = eslintRule.options,
baseConfig = _eslintRule$options.baseConfig,
ignore = _eslintRule$options.ignore,
useEslintrc = _eslintRule$options.useEslintrc,
restOptions = _objectWithoutProperties(_eslintRule$options, ["baseConfig", "ignore", "useEslintrc"]);
restOptions.emitWarning = true;
eslintRule.options = restOptions;
var babelRule = _utils2.default.findRule(config.module.rules, babelLoaderMatcher);
babelRule.options.babelrc = true;
_utils2.default.addBeforeRule(config.module.rules, fileLoaderMatcher, _loaders2.default.scss);
_utils2.default.addBeforeRule(config.module.rules, fileLoaderMatcher, _loaders2.default.scssModules);
_utils2.default.addBeforeRule(config.module.rules, fileLoaderMatcher, _loaders2.default.cssModules);
config.plugins = (config.plugins || []).concat([new _extractTextWebpackPlugin2.default({
filename: cssFilename,
allChunks: true,
disable: process.env.NODE_ENV !== "production"
})]);
config = rewireReactHotLoader(config, env);
return config;
};