roadhog-extra
Version:
Cli tool for serve and build react app, based on create-react-app, support JSON pattern config.
81 lines (67 loc) • 2.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
exports.default = getCSSLoaders;
var _autoprefixer = require('autoprefixer');
var _autoprefixer2 = _interopRequireDefault(_autoprefixer);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
function getCSSLoaders(config) {
var own = [];
var nodeModules = [];
var noCSSModules = [];
var baseCSSOptions = {
importLoaders: 1,
sourceMap: !config.disableCSSSourceMap
};
if (process.env.NODE_ENV === "production") {
baseCSSOptions.minimize = true;
}
if (config.disableCSSModules) {
own.push({
loader: require.resolve('css-loader'),
options: baseCSSOptions
});
} else {
own.push({
loader: require.resolve('css-loader'),
options: _extends({}, baseCSSOptions, {
modules: true,
localIdentName: '[local]___[hash:base64:5]'
})
});
}
nodeModules.push({
loader: require.resolve('css-loader'),
options: baseCSSOptions
});
noCSSModules.push({
loader: require.resolve('css-loader'),
options: baseCSSOptions
});
var postcssLoader = {
loader: require.resolve('postcss-loader'),
options: {
// Necessary for external CSS imports to work
// https://github.com/facebookincubator/create-react-app/issues/2677
ident: 'postcss',
plugins: function plugins() {
return [require('postcss-flexbugs-fixes'), (0, _autoprefixer2.default)(config.autoprefixer || {
browsers: ['>1%', 'last 4 versions', 'Firefox ESR', 'not ie < 9'],
flexbox: 'no-2009'
})].concat(_toConsumableArray(config.extraPostCSSPlugins ? config.extraPostCSSPlugins : []));
}
}
};
noCSSModules.push(postcssLoader);
own.push(postcssLoader);
nodeModules.push(postcssLoader);
return {
own: own,
nodeModules: nodeModules,
noCSSModules: noCSSModules
};
}
module.exports = exports['default'];