Files
Falcon-PrestaShop-9/_dev/webpack/webpack.production.js

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()
)
);