Files
flowbite-beardedtek.com/webpack.config.js
2025-04-17 22:29:03 -08:00

70 lines
1.6 KiB
JavaScript

const TerserPlugin = require('terser-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");
const { SourceMapDevToolPlugin } = require("webpack");
const path = require('path');
module.exports = {
mode: 'production',
entry: {
app: path.resolve(__dirname, 'src/app.js')
},
output: {
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'static/js/'),
clean: true
},
module: {
rules: [
{
test: /\.css$/,
use: [MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader'],
},
{
test: /\.(png|jpe?g|gif|svg)$/i,
type: 'asset/resource',
generator: {
filename: '../images/[name][ext][query]'
}
},
{
test: /\.(ttf|eot|woff2?|otf)(\?v=\d+\.\d+\.\d+)?$/,
type: 'asset/resource',
generator: {
filename: '../fonts/[name][ext][query]'
}
},
],
},
resolve: {
extensions: ['.js', '.jsx', '.css']
},
plugins: [
new MiniCssExtractPlugin(),
new SourceMapDevToolPlugin({
filename: "[file].map"
})
],
optimization: {
splitChunks: {
chunks: 'all',
cacheGroups: {
vendor: {
test: /[\\/]node_modules[\\/]/,
name: 'vendors',
chunks: 'all',
},
},
},
minimizer: [
new TerserPlugin({
terserOptions:{
compress: {
drop_console: true,
}
}
}),
new CssMinimizerPlugin()
]
},
};