const path = require("path");
const ESLintWebpackPlugin = require("eslint-webpack-plugin");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");
function getStyleLoader(pre){ return [ MiniCssExtractPlugin.loader, "css-loader",
{ loader: "postcss-loader", options: { postcssOptions: { plugins: [ "postcss-preset-env", ], }, }, }, pre, ].filter(Boolean) }
module.exports = { entry:"./src/main.js", output:{ path: path.resolve(__dirname , "../dist"), filename:"static/js/main.js", clean: true, }, module:{ rules:[ { test: /\.css$/, use: getStyleLoader() }, { test: /\.less$/, use: getStyleLoader("less-loader") }, { test: /\.(png|jpe?g|gif|webp)$/, type: "asset", parser:{ dataUrlCondition:{ maxSize: 10*1024 } }, generator: { filename: 'static/imgs/[hash:8][ext][query]' } }, { test: /\.(ttf|woff2?)$/, type: "asset/resource", generator: { filename: "static/media/[hash:8][ext][query]", }, }, { test: /\.js$/, exclude: /node_modules/, loader: "babel-loader", }, ], }, plugins:[
new ESLintWebpackPlugin({ context: path.resolve(__dirname, "../src"), }),
new HtmlWebpackPlugin({ template: path.resolve(__dirname, "../public/index.html"), }),
new MiniCssExtractPlugin({ filename: "static/css/main.css", }), new CssMinimizerPlugin(), ],
mode:"production" };
|