var Metalsmith = require("metalsmith"); var htmlMinifier = require("metalsmith-html-minifier"); var layouts = require("metalsmith-layouts"); var markdown = require("metalsmith-markdown-remarkable"); var permalinks = require("@metalsmith/permalinks"); var static = require("metalsmith-static"); var puppeteer = require("puppeteer"); var srcHTML = "file:" + __dirname + "/pub/index.html"; var destPDF = "./pub/cv-anders-englof-ytterstrom.pdf"; async function generatePDF() { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto(srcHTML, { waitUntil: "networkidle2", }); await page.pdf({ path: destPDF, }); await browser.close(); } Metalsmith(__dirname) .source("./src") .destination("./pub") .use( markdown({ html: true, typographer: false, }), ) .use(permalinks()) .use( layouts({ engine: "handlebars", }), ) .use(htmlMinifier()) .use( static({ src: "./assets", dest: "./", }), ) .build(function (err, _files) { if (err) { throw err; } generatePDF(); });