UNPKG

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
"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; };