Skip to content

Instantly share code, notes, and snippets.

@Infl1ght
Created July 30, 2019 13:00
Show Gist options
  • Save Infl1ght/bdd4037e9e91c4207ebc30f79b8e7af8 to your computer and use it in GitHub Desktop.
Save Infl1ght/bdd4037e9e91c4207ebc30f79b8e7af8 to your computer and use it in GitHub Desktop.
Configuration of vue-cli for prerendering pages
const path = require('path')
const webpack = require('webpack')
const PrerenderSPAPlugin = require('prerender-spa-plugin')
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer
module.exports = {
runtimeCompiler: true,
configureWebpack: {
resolve: {
extensions: ['.js'],
alias: {
'jquery': 'jquery/dist/jquery.slim.js',
}
},
plugins: [
new webpack.ProvidePlugin({
'$': 'jquery',
jQuery: 'jquery',
Popper: ['popper.js', 'default'],
'Util': "exports-loader?Util!bootstrap/js/dist/util"
}),
]
},
chainWebpack: (config) => {
const svgRule = config.module.rule('svg');
svgRule.uses.clear();
svgRule
.use('vue-svg-loader')
.loader('vue-svg-loader');
if (process.env.NODE_ENV !== 'production') {
return;
}
config
.plugin('html')
.tap(args => {
args[0].template = path.join(__dirname, './public', 'index.html');
args[0].filename = 'app.html';
return args;
});
}
};
if (process.env.NODE_ENV === 'production') {
module.exports.configureWebpack.plugins = (module.exports.plugins || []).concat([
new PrerenderSPAPlugin({
staticDir: path.join(__dirname, '../firebase/public'),
outputDir: path.join(__dirname, '../firebase/public'),
indexPath: path.join(__dirname, '../firebase/public', 'app.html'),
assetsPublicPath: '/',
routes: ['/', '/ru', '/en'],
renderer: new Renderer({
headless: true,
renderAfterTime: 4000,
}),
postProcess: function(renderedRoute) {
renderedRoute.route = renderedRoute.originalRoute
renderedRoute.html = renderedRoute.html
.replace(`id="app"`, `id="app" data-server-rendered="true"`)
.replace(/<script (.*?)>/g, '<script $1 defer>')
if (renderedRoute.route.endsWith('.html')) {
renderedRoute.outputPath = path.join(__dirname, '../firebase/public', renderedRoute.route)
}
return renderedRoute;
}
}),
])
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment