saven
Version:
63 lines (62 loc) • 2.55 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const path = require("path");
const util_1 = require("../util");
const chain_1 = require("../util/chain");
const base_conf_1 = require("./base.conf");
const emptyObj = {};
function default_1(config) {
const chain = base_conf_1.default();
const { alias = emptyObj, entry = emptyObj, output = emptyObj, sourceRoot = '', outputRoot, publicPath, staticDirectory = 'static', chunkDirectory = 'chunk', designWidth = 750, deviceRatio, enableSourceMap = true, enableExtract = false, defineConstants = emptyObj, env = emptyObj, styleLoaderOption = emptyObj, cssLoaderOption = emptyObj, sassLoaderOption = emptyObj, lessLoaderOption = emptyObj, stylusLoaderOption = emptyObj, mediaUrlLoaderOption = emptyObj, fontUrlLoaderOption = emptyObj, imageUrlLoaderOption = emptyObj, miniCssExtractPluginOption = emptyObj, module = {
postcss: emptyObj
}, plugins } = config;
const plugin = {};
if (enableExtract) {
plugin.miniCssExtractPlugin = chain_1.getMiniCssExtractPlugin([{
filename: 'css/[name].css',
chunkFilename: 'css/[id].css'
}, miniCssExtractPluginOption]);
}
plugin.htmlWebpackPlugin = chain_1.getHtmlWebpackPlugin([{
filename: 'index.html',
template: path.join(util_1.appPath, sourceRoot, 'index.html')
}]);
plugin.definePlugin = chain_1.getDefinePlugin([chain_1.processEnvOption(env), defineConstants]);
plugin.hotModuleReplacementPlugin = chain_1.getHotModuleReplacementPlugin();
const mode = 'development';
chain.merge({
mode,
devtool: chain_1.getDevtool([enableSourceMap]),
entry: chain_1.getEntry(entry),
output: chain_1.getOutput([{
outputRoot,
publicPath,
chunkDirectory
}, output]),
resolve: { alias },
module: chain_1.getModule({
mode,
designWidth,
deviceRatio,
enableExtract,
enableSourceMap,
styleLoaderOption,
cssLoaderOption,
lessLoaderOption,
sassLoaderOption,
stylusLoaderOption,
fontUrlLoaderOption,
imageUrlLoaderOption,
mediaUrlLoaderOption,
module,
plugins,
staticDirectory
}),
plugin,
optimization: {
noEmitOnErrors: true
}
});
return chain;
}
exports.default = default_1;