materio-d9/build/webpack.config.prod.js

80 lines
1.7 KiB
JavaScript

'use strict'
const webpack = require('webpack')
const { merge } = require('webpack-merge')
const baseConfig = require('./webpack.config.base')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const TerserPlugin = require("terser-webpack-plugin");
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
module.exports = merge(baseConfig, {
mode: 'production',
module: {
rules: [
{
test: /\.css?$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
options: {
publicPath: '',
},
},
'css-loader'
]
}, {
test: /\.scss?$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
options: {
publicPath: '',
},
},
'css-loader',
'sass-loader'
]
}, {
test: /\.(png|jpg|gif|svg)$/,
use: [
{
loader: 'url-loader',
options: {
limit: 5000
}
}
]
}
]
},
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
parallel: true,
test: /\.(js|vue)$/,
// extractComments: true
terserOptions: {
compress: {
// drop_console: true,
pure_funcs: [
'console.log',
'console.info',
'console.debug'
// 'console.warn'
]
},
},
})
],
},
plugins: [
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('production')
}),
new BundleAnalyzerPlugin({
'analyzerMode': 'static'
}),
]
})