|
|
@ -4,6 +4,7 @@ const mkdirp = require('mkdirp'); |
|
|
|
const cosmiconfig = require('cosmiconfig'); |
|
|
|
const Prerenderer = require('@prerenderer/prerenderer'); |
|
|
|
const Puppeteer = require('@prerenderer/renderer-puppeteer'); |
|
|
|
const htmlnano = require('htmlnano'); |
|
|
|
|
|
|
|
module.exports = bundler => { |
|
|
|
bundler.on('buildEnd', async () => { |
|
|
@ -28,17 +29,18 @@ module.exports = bundler => { |
|
|
|
const start = Date.now(); |
|
|
|
const renderedRoutes = await prerenderer.renderRoutes(routes); |
|
|
|
const end = Date.now(); |
|
|
|
renderedRoutes.forEach(route => { |
|
|
|
await Promise.all(renderedRoutes.map(async route => { |
|
|
|
try { |
|
|
|
const outputDir = path.join(outDir, route.route); |
|
|
|
const file = path.normalize(`${outputDir}/index.html`); |
|
|
|
mkdirp.sync(outputDir); |
|
|
|
fs.writeFileSync(file, route.html.trim()); |
|
|
|
const {html} = await htmlnano.process(route.html.trim()); |
|
|
|
fs.writeFileSync(file, html); |
|
|
|
const end = Date.now(); |
|
|
|
} catch (err) { |
|
|
|
console.error(err); |
|
|
|
} |
|
|
|
}); |
|
|
|
})); |
|
|
|
console.log(`Finished rendering in ${end - start}ms.`); |
|
|
|
prerenderer.destroy(); |
|
|
|
} catch (err) { |
|
|
|