Skip to content
Snippets Groups Projects
webpack.common.js 1.91 KiB
Newer Older
  • Learn to ignore specific revisions
  • Matthias Konitzny's avatar
    Matthias Konitzny committed
    const MiniCssExtractPlugin = require("mini-css-extract-plugin");
    const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");
    
    
    const babelOptions = {
        presets: ["@babel/preset-env", "@babel/preset-react"],
    };
    
    module.exports = {
        entry: {
    
            frontend: "./src/frontend.tsx",
    
        },
        output: {
            filename: "[name].js",
            path: path.resolve(__dirname, "build"),
            clean: true,
        },
        module: {
            rules: [
                {
                    test: /\.ts(x?)$/,
                    exclude: /node_modules/,
                    use: [
                        {
                            loader: "babel-loader",
                            options: babelOptions,
                        },
                        {
                            loader: "ts-loader",
                        },
                    ],
                },
                {
                    test: /\.js$/,
                    exclude: /node_modules/,
                    use: [
                        {
                            loader: "babel-loader",
                            options: babelOptions,
                        },
                    ],
                },
                {
                    test: /\.css$/i,
    
    Matthias Konitzny's avatar
    Matthias Konitzny committed
                    use: [MiniCssExtractPlugin.loader, "css-loader"],
    
                },
                {
                    test: /\.(png|svg|jpg|jpeg|gif)$/i,
                    type: "asset/resource",
                },
            ],
        },
        resolve: {
            extensions: [".tsx", ".ts", ".js"],
        },
    
    Matthias Konitzny's avatar
    Matthias Konitzny committed
        plugins: [new MiniCssExtractPlugin()],
    
    Matthias Konitzny's avatar
    Matthias Konitzny committed
            minimizer: [`...`, new CssMinimizerPlugin()],
    
            moduleIds: "deterministic",
            runtimeChunk: "single",
            splitChunks: {
                cacheGroups: {
                    vendor: {
                        test: /[\\/]node_modules[\\/]/,
                        name: "vendors",
                        chunks: "all",
                    },
                },
            },
        },
    };