J'essaie (sans succès) de pré-rendre le HTML de plusieurs applications Vue au sein d'un même projet scaffoldé avec Vue CLI. Je ne veux pas utiliser Vue Router ou Nuxt etc. pour de multiples raisons.
J'ai essayé d'utiliser prerender-spa-plugin mais comme je n'utilise pas d'itinéraires, il ne fait que prérenseigner l'index.
Mon fichier vue.config.js ressemble à ceci :
const path = require('path');
const PrerenderSPAPlugin = require('prerender-spa-plugin');
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer;
module.exports = {
pages: {
index: 'src/index.js',
about: 'src/about.js',
},
configureWebpack: {
plugins: [
new PrerenderSPAPlugin({
staticDir: path.join(__dirname, 'dist'),
routes: ['/'],
postProcess(route) {
route.html = route.html.replace('</script><div>', '</script><div id="app" data-server-rendered="true">');
return route;
},
renderer: new Renderer({
headless: true,
renderAfterDocumentEvent: 'render-event',
}),
}),
],
},
};
et mes fichiers index.js et about.js ressemblent essentiellement à ceci :
import Vue from 'vue';
import App from './Index.vue';
new Vue({
render: h => h(App),
mounted() {
document.dispatchEvent(new Event('render-event'));
},
}).$mount('#app');
J'ai également des pages uniques publiques/ index.html et about.html.
En routes
de prerender-spa-plugin ne semble pas reconnaître les éléments tels que '/about.html'
. Existe-t-il un moyen simple d'obtenir plusieurs pages pré-rendues ?
Dois-je me battre avec le module SSR ?
Merci d'avance.