45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
const { ESBuildMinifyPlugin } = require('esbuild-loader');
|
|
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
|
|
const PurgeCSSPlugin = require('purgecss-webpack-plugin');
|
|
const safeList = require('./purge-safelist');
|
|
const glob = require('glob-all');
|
|
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
|
|
const { cleanDistFolders } = require('./webpack.parts');
|
|
const { merge } = require("webpack-merge");
|
|
|
|
const plugins = (purge, analyze) => ([
|
|
analyze ? new BundleAnalyzerPlugin() : false,
|
|
purge ? new PurgeCSSPlugin({
|
|
paths: glob.sync([
|
|
'js/*.js',
|
|
'js/**/*.js',
|
|
'../templates/**/*.tpl',
|
|
'../modules/**/*.tpl',
|
|
'../modules/**/*.js'
|
|
]),
|
|
safelist: safeList.list,
|
|
safelistPatterns: safeList.patterns
|
|
})
|
|
: false
|
|
].filter(el => el && el));
|
|
|
|
exports.productionConfig = ({ purge, analyze }) => (
|
|
merge(
|
|
{
|
|
devtool: 'hidden-source-map',
|
|
optimization: {
|
|
minimize: true,
|
|
minimizer: [
|
|
new ESBuildMinifyPlugin({
|
|
target: 'es2015',
|
|
format: 'iife'
|
|
}),
|
|
new CssMinimizerPlugin()
|
|
],
|
|
},
|
|
plugins: plugins(purge, analyze)
|
|
},
|
|
cleanDistFolders()
|
|
)
|
|
);
|