kkt
Version:
Create React apps with no build configuration, Cli tool for creating react apps.
91 lines (88 loc) • 3.23 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getStyleLoaders = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _postcssNormalize = _interopRequireDefault(require("postcss-normalize"));
var _postcssFlexbugsFixes = _interopRequireDefault(require("postcss-flexbugs-fixes"));
var _postcssPresetEnv = _interopRequireDefault(require("postcss-preset-env"));
var _path = require("./path");
// @ts-ignore
// @ts-ignore
/**
* 方法来源
* https://github.com/facebook/create-react-app/blob/9673858a3715287c40aef9e800c431c7d45c05a2/packages/react-scripts/config/webpack.config.js#L118-L197
*/
var getStyleLoaders = function getStyleLoaders(cssOptions) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var preProcessor = arguments.length > 2 ? arguments[2] : undefined;
var loaders = [];
if (options.isEnvDevelopment) {
loaders.push(require.resolve('style-loader'));
}
if (options.isEnvProduction) {
loaders.push({
// loader: MiniCssExtractPlugin.loader,
loader: options.miniCssExtractPluginLoader,
// css is located in `static/css`, use '../../' to locate index.html folder
// in production `paths.publicUrlOrPath` can be a relative path
options: _path.paths.publicUrlOrPath.startsWith('.') ? {
publicPath: '../../'
} : {}
});
}
loaders.push({
loader: require.resolve('css-loader'),
options: cssOptions
});
loaders.push({
// Options for PostCSS as we reference these options twice
// Adds vendor prefixing based on your specified browser support in
// package.json
loader: require.resolve('postcss-loader'),
options: {
postcssOptions: {
// Necessary for external CSS imports to work
// https://github.com/facebook/create-react-app/issues/2677
ident: 'postcss',
config: false,
plugins: [(0, _postcssFlexbugsFixes["default"])(), (0, _postcssPresetEnv["default"])({
autoprefixer: {
flexbox: 'no-2009'
},
stage: 3
}),
// Adds PostCSS Normalize as the reset css with default options,
// so that it honors browserslist config in package.json
// which in turn let's users customize the target behavior as per their needs.
(0, _postcssNormalize["default"])()]
},
sourceMap: cssOptions.sourceMap
}
});
if (preProcessor) {
loaders.push({
loader: require.resolve('resolve-url-loader'),
options: {
sourceMap: cssOptions.sourceMap,
/**
* Build load *module.less, shows resolve-url-loader warning
* https://github.com/kktjs/kkt/issues/313
*/
silent: true,
root: _path.paths.appSrc
}
});
loaders.push({
loader: require.resolve(preProcessor),
options: (0, _objectSpread2["default"])({
sourceMap: true
}, options.preProcessorOptions)
});
}
return loaders;
};
exports.getStyleLoaders = getStyleLoaders;
//# sourceMappingURL=getStyleLoaders.js.map
;