koa-web-kit
Version:
A modern, production-ready, and full-stack node web framework
59 lines (54 loc) • 1.53 kB
JavaScript
;
const webpackMerge = require('webpack-merge');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const ErrorOverlayPlugin = require('error-overlay-webpack-plugin');
const baseWebpackConfig = require('./webpack.config.base');
const config = require('./env');
const utils = require('./utils');
const isHMREnabled = config.isHMREnabled();
const isCSSModules = config.isCSSModules();
const webpackConfig = webpackMerge(baseWebpackConfig, {
output: {
publicPath: isHMREnabled ? '/' : utils.getPublicPath(),
filename: '[name].js',
chunkFilename: '[name].js',
},
module: {
rules: [
...utils.getAllStyleRelatedLoaders(
true,
isHMREnabled,
isCSSModules,
undefined,
false,
!isHMREnabled
),
],
},
mode: 'development',
devtool: 'cheap-module-source-map',
stats: { children: false },
plugins: [new ErrorOverlayPlugin()],
});
// optimization new in webpack4
if (!isHMREnabled) {
webpackConfig.plugins.push(
new MiniCssExtractPlugin({
// Options similar to the same options in webpackOptions.output
// both options are optional
filename: '[name].css',
chunkFilename: '[id].css',
})
);
webpackConfig.optimization = {
namedModules: true,
runtimeChunk: 'single',
};
}
// console.log(
// 'webpackConfig.output.publicPath: ',
// webpackConfig.output.publicPath
// );
// console.log(webpackConfig);
// console.log(webpackConfig.plugins);
module.exports = webpackConfig;