UNPKG

webpack-config-vacuumlabs

Version:
81 lines (65 loc) 2.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.loaders = loaders; exports.plugins = plugins; var _autoprefixer = _interopRequireDefault(require("autoprefixer")); var _extractTextWebpackPlugin = _interopRequireDefault(require("extract-text-webpack-plugin")); var _lodash = _interopRequireDefault(require("lodash")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } var _loaders = { css: null, scss: 'sass-loader', sass: 'sass-loader?indentedSyntax' }; var cssModulesConfig = '?modules&camelCase=dashes&localIdentName=[path][name]---[local]---[hash:base64:8]'; var postcssLoader = { loader: 'postcss-loader', options: { plugins: function plugins() { return [(0, _autoprefixer["default"])({ browsers: 'last 2 version' })]; } } }; var cssLoader = function cssLoader(modules) { return "css-loader".concat(modules ? cssModulesConfig : ''); }; var use = function use(modules, ext) { return _lodash["default"].compact([cssLoader(modules), postcssLoader, _loaders[ext]]); }; function rule(transform, ext) { return { test: new RegExp("\\.".concat(ext, "$")), oneOf: [{ resourceQuery: /module/, use: transform(use(true, ext)) }, { use: transform(use(false, ext)) }] }; } function loaders(options) { var transform = options.useDevServer ? function (l) { return ['style-loader'].concat(_toConsumableArray(l)); } : function (l) { return _extractTextWebpackPlugin["default"].extract({ fallback: 'style-loader', use: l }); }; return _lodash["default"].keys(_loaders).map(_lodash["default"].partial(rule, transform)); } // Render styles into separate cacheable file to prevent FOUC and // optimize for critical rendering path. function plugins(options) { return options.useDevServer ? [] : [new _extractTextWebpackPlugin["default"]({ filename: options.useHashedAssetNames ? 'app.[contenthash].css' : 'app.css', allChunks: true })]; }