react-online/scripts/webpack/build.js
2023-12-22 20:21:49 +08:00

52 lines
1.6 KiB
JavaScript

const {merge} = require("webpack-merge");
const path = require("path");
const {CleanWebpackPlugin} = require("clean-webpack-plugin");
const CopyWebpackPlugin = require("copy-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");
const TerserPlugin = require("terser-webpack-plugin");
const common = require("./common");
const {PROJECT_PATH} = require("./const");
module.exports = merge(common, {
mode: "production",
devtool: false,
output: {
filename: "script/[name].[contenthash:8].js",
path: path.resolve(PROJECT_PATH, "./build"),
},
optimization: {
minimize: true,
minimizer: [
new CssMinimizerPlugin(),
new TerserPlugin(),
],
},
module: {
rules: [
{
test: /\.css$/i,
use: [
MiniCssExtractPlugin.loader, "css-loader", "postcss-loader",
],
},
],
},
plugins: [
new MiniCssExtractPlugin({
filename: "style/[name].[contenthash:8].css",
}),
new CleanWebpackPlugin(),
new CopyWebpackPlugin({
patterns: [
{
from: path.resolve(PROJECT_PATH, "public"),
to: path.resolve(PROJECT_PATH, "build"),
filter: (filepath) =>
path.resolve(filepath) !== path.resolve(PROJECT_PATH, "public/index.html"),
},
],
}),
],
});