saven
Version:
57 lines (56 loc) • 2.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const util_1 = require("../util");
const chain_1 = require("../util/chain");
const base_conf_1 = require("./base.conf");
function default_1(config) {
const chain = base_conf_1.default();
const { alias = util_1.emptyObj, outputRoot = '', staticDirectory, dllDirectory = 'lib', dllEntry = {
lib: ['nervjs', '@savenjs/saven-h5', '@savenjs/router', '@savenjs/components']
}, designWidth = 750, deviceRatio, enableSourceMap = false, styleLoaderOption, cssLoaderOption, lessLoaderOption, sassLoaderOption, stylusLoaderOption, fontUrlLoaderOption, imageUrlLoaderOption, mediaUrlLoaderOption, defineConstants = util_1.emptyObj, env = util_1.emptyObj, module = {
postcss: util_1.emptyObj
}, plugins } = config;
const mode = 'production';
const minimizer = [];
const isUglifyEnabled = (plugins.uglify && plugins.uglify.enable === false)
? false
: true;
if (isUglifyEnabled) {
minimizer.push(chain_1.getUglifyPlugin([enableSourceMap, plugins.uglify ? plugins.uglify.config : {}]));
}
chain.merge({
mode,
devtool: chain_1.getDevtool(enableSourceMap),
entry: dllEntry,
output: chain_1.getDllOutput({
outputRoot,
dllDirectory
}),
resolve: { alias },
module: chain_1.getModule({
mode,
staticDirectory,
designWidth,
deviceRatio,
enableExtract: false,
enableSourceMap,
styleLoaderOption,
cssLoaderOption,
lessLoaderOption,
sassLoaderOption,
stylusLoaderOption,
fontUrlLoaderOption,
imageUrlLoaderOption,
mediaUrlLoaderOption,
module,
plugins
}),
plugin: {
definePlugin: chain_1.getDefinePlugin([chain_1.processEnvOption(env), defineConstants]),
dllPlugin: chain_1.getDllPlugin(outputRoot, dllDirectory)
},
optimization: { minimizer }
});
return chain;
}
exports.default = default_1;