UNPKG

sitespeed.io

Version:

sitespeed.io is an open-source tool for comprehensive web performance analysis, enabling you to test, monitor, and optimize your website’s speed using real browsers in various environments.

40 lines (31 loc) 1.21 kB
import path from 'node:path'; import { fileURLToPath } from 'node:url'; import { compileFile, compile } from 'pug'; import { getLogger } from '@sitespeed.io/log'; const log = getLogger('sitespeedio.plugin.html'); const __dirname = fileURLToPath(new URL('.', import.meta.url)); const basePath = path.resolve(__dirname, 'templates'); const templateCache = {}; function getTemplate(templateName) { if (!templateName.endsWith('.pug')) templateName = templateName + '.pug'; const template = templateCache[templateName]; if (template) { return template; } const filename = path.resolve(basePath, templateName); const renderedTemplate = compileFile(filename); templateCache[templateName] = renderedTemplate; return renderedTemplate; } export function renderTemplate(templateName, locals) { try { return getTemplate(templateName)(locals); } catch (error) { log.error('Could not generate %s, %s', templateName, error.message); return `Could not generate ${templateName} error: ${error.message}`; } } export function addTemplate(templateName, templateString) { const compiledTemplate = compile(templateString); templateCache[templateName + '.pug'] = compiledTemplate; }