const HtmlWebpackPlugin = require("html-webpack-plugin"); const HtmlWebpackInlineSourcePlugin = require("html-webpack-inline-source-plugin"); const path = require("path"); const MiniCssExtractPlugin = require("mini-css-extract-plugin"); const CssMinimizerPlugin = require("css-minimizer-webpack-plugin"); const CopyPlugin = require("copy-webpack-plugin"); module.exports = { entry: ["./src/index.tsx"], mode: "development", output: { path: path.resolve(__dirname, "build"), publicPath: "/", }, resolve: { extensions: ["*", ".js", ".jsx", ".ts", ".tsx", ".json"], }, module: { rules: [ { test: /\.(js|tsx?)$/, loader: "babel-loader", }, { test: /\.(png|svg|jpg|gif|ico)$/, loader: "file-loader", options: { // publicPath: 'build', esModule: false, }, }, { test: /\.css$/, // exclude: /node_modules/, use: [ { loader: MiniCssExtractPlugin.loader, }, "css-loader", ], }, ], }, plugins: [ new HtmlWebpackPlugin({ template: "public/index.html", filename: "index.html", inlineSource: ".(js|css)", publicPath: "/landing-page/", // <--- This is only for github pages without a custom domain, remove this line if you have a custom domain }), new MiniCssExtractPlugin({ filename: "styles.css", }), new CopyPlugin({ patterns: [{ from: "./public/manifest.json", to: "manifest.json" }], }), // new HtmlWebpackInlineSourcePlugin(), ], optimization: { minimizer: [`...`, new CssMinimizerPlugin()], }, };