// Production config const path = require("path"); const merge = require("webpack-merge"); const resolve = path.resolve; const DynamicCdnWebpackPlugin = require("dynamic-cdn-webpack-plugin"); const PrerenderSPAPlugin = require("prerender-spa-plugin"); const FaviconsWebpackPlugin = require("favicons-webpack-plugin"); /* NOTE: This is a list of all routes that are prerendered for production use. Please list all routes that contain search engine accessible content, i.e., stuff that you would like to find with a Google Search. */ const PRERENDERED_ROUTES = ["/", "/404"]; const commonConfig = require("./common"); module.exports = merge(commonConfig, { mode: "production", entry: "./index.tsx", output: { filename: "js/bundle.[hash].min.js", path: resolve(__dirname, "../../dist"), publicPath: "/" }, devtool: "source-map", plugins: [ new FaviconsWebpackPlugin({ logo: "./assets/img/favicon.png", icons: { android: true, appleIcon: true, appleStartup: true, coast: true, favicons: true, firefox: true, opengraph: true, twitter: true, yandex: true, windows: true } }), new DynamicCdnWebpackPlugin(), new PrerenderSPAPlugin({ // Required - The path to the webpack-outputted app to prerender. staticDir: resolve(__dirname, "../../dist"), // Required - Routes to render. routes: PRERENDERED_ROUTES }) ] });