@gdjiami/cli
Version:
CLI for build front end project.
59 lines (58 loc) • 2.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var MiniCssExtractPlugin = require('mini-css-extract-plugin');
/**
* @param environment 环境变量
* @param cssOption css-loader 的参数
* @param preProcessor 其他预处理器, 如sass
*/
exports.default = (function (environment, options, preProcessor, afterLoaders) {
var NODE_ENV = environment.NODE_ENV, SOURCE_MAP = environment.SOURCE_MAP, PUBLIC_URL = environment.PUBLIC_URL;
var isProduction = NODE_ENV === 'production';
var shouldUseRelativeAssetPaths = PUBLIC_URL === './' || PUBLIC_URL === '.';
var shouldUseSourceMap = SOURCE_MAP !== 'false';
var cssOption = options.cssOption, ie8 = options.ie8;
var extract = isProduction || ie8;
var loaders = tslib_1.__spreadArrays([
!extract && require.resolve('style-loader'),
extract && {
loader: MiniCssExtractPlugin.loader,
options: {
publicPath: shouldUseRelativeAssetPaths ? '../../' : undefined,
},
}
], (afterLoaders || []), [
{
loader: require.resolve('css-loader'),
options: cssOption,
},
{
loader: require.resolve('postcss-loader'),
options: {
ident: 'postcss',
plugins: function () { return [
require('postcss-flexbugs-fixes'),
// 可以在package.json 中指定browserslist 选项,设置浏览器兼容列表
// see more infomation in https://github.com/csstools/postcss-preset-env
require('postcss-preset-env')({
autoprefixer: {
flexbox: 'no-2009',
},
stage: 3,
}),
]; },
sourceMap: isProduction && shouldUseSourceMap,
},
},
]).filter(Boolean);
if (preProcessor) {
loaders.push({
loader: require.resolve(preProcessor),
options: {
sourceMap: isProduction && shouldUseSourceMap,
},
});
}
return loaders;
});