const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
module.exports = (env, argv) => {
const isProd = argv.mode === 'production';
return {
entry: './fabula-ultima-sheet.js',
output: {
filename: isProd ? 'bundle.[contenthash].js' : 'bundle.js',
path: path.resolve(__dirname, 'dist'),
clean: true,
// Disable IIFE wrapping so onclick= handlers can reach global functions
iife: false,
},
module: {
rules: [
{
test: /\.css$/,
use: [
isProd ? MiniCssExtractPlugin.loader : 'style-loader',
'css-loader',
],
},
],
},
plugins: [
...(isProd
? [new MiniCssExtractPlugin({ filename: 'styles.[contenthash].css' })]
: []),
new HtmlWebpackPlugin({
template: './fabula-ultima-sheet.html',
filename: 'index.html',
scriptLoading: 'blocking',
}),
],
optimization: {
minimizer: ['...', new CssMinimizerPlugin()],
},
devServer: {
static: { directory: path.resolve(__dirname, 'dist') },
port: 8080,
open: true,
},
};
};