diff --git a/config-overrides.js b/config-overrides.js index 34d87a1..adf7499 100644 --- a/config-overrides.js +++ b/config-overrides.js @@ -1,8 +1,9 @@ const { override, addLessLoader, addWebpackAlias, fixBabelImports, addWebpackPlugin } = require('customize-cra') const path = require('path') // const darkThemeVars = require('antd/dist/dark-theme') -const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; -const AntDesignThemePlugin = require('antd-theme-webpack-plugin'); +// const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin +const AntDesignThemePlugin = require('antd-theme-webpack-plugin') +const PrerenderSPAPlugin = require('prerender-spa-plugin') const options = { antDir: path.join(__dirname, './node_modules/antd'), @@ -16,11 +17,23 @@ const options = { const resolve = dir => path.join(__dirname, '.', dir) -const rewiredSourceMap = () => config => { +const rewiredSourceMap = () => (config) => { config.devtool = config.mode === 'development' ? 'cheap-module-source-map' : false return config } +const prerenderPlugin = () => (config) => { + if (config.mode === 'production') { + config.plugins = config.plugins.concat([ + new PrerenderSPAPlugin({ + routes: ['/dashboard'], + staticDir: path.join(__dirname, 'build'), + }), + ]); + } + return config +} + module.exports = override( fixBabelImports('import', { libraryName: 'antd', @@ -42,5 +55,6 @@ module.exports = override( // new BundleAnalyzerPlugin(), new AntDesignThemePlugin(options) ), + prerenderPlugin(), rewiredSourceMap() ) diff --git a/package.json b/package.json index 5cbd1d0..6a0efec 100644 --- a/package.json +++ b/package.json @@ -64,6 +64,7 @@ "http-proxy-middleware": "^0.20.0", "less": "^2.7.0", "less-loader": "^5.0.0", + "prerender-spa-plugin": "^3.4.0", "prettier": "^1.19.1", "react-app-rewired": "^2.1.5", "redux-devtools-extension": "^2.13.8",