diff options
| author | Leonardo Bishop <me@leonardobishop.com> | 2023-08-28 21:54:57 +0100 |
|---|---|---|
| committer | Leonardo Bishop <me@leonardobishop.com> | 2023-08-28 21:54:57 +0100 |
| commit | 7c8ca1c5cf0067a350578d5589139abf076ef1ec (patch) | |
| tree | c3dfb0aa397c684dae64039524c99d28b4cec369 /app/builder/pages.ts | |
| parent | b31733593683374366058a23a0a470911e2722c0 (diff) | |
Add html minification
Diffstat (limited to 'app/builder/pages.ts')
| -rw-r--r-- | app/builder/pages.ts | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/app/builder/pages.ts b/app/builder/pages.ts index bc2c14a..1aed94e 100644 --- a/app/builder/pages.ts +++ b/app/builder/pages.ts @@ -2,13 +2,16 @@ import { readFileSync } from 'fs'; import glob from 'glob'; import { logger } from '../logger.js' import { marked } from 'marked'; +import { gfmHeadingId } from 'marked-gfm-heading-id'; import matter from 'gray-matter'; -export function parsePage(page: Page) { +marked.use(gfmHeadingId()); + +export async function parsePage(page: Page) { try { - const result = matter(page.raw); - const config = result.data; - const html = marked.parse(result.content, { mangle: false, headerIds: false }); + const frontmatter = matter(page.raw); + const config = frontmatter.data; + const html = marked.parse(frontmatter.content, { mangle: false }); page.html = html; page.config = config; @@ -35,21 +38,23 @@ export class PageDirectory { for (const page in this.pages) { delete this.pages[page]; } - + } + + public init = async (): Promise<void> => { const localPages = glob.sync(`**/*.{md,html}`, { cwd: this.pagesPath }) - - localPages.forEach(this.loadPage); - + for (const page in localPages) { + await this.loadPage(localPages[page]); + } this.lastFullBuild = Date.now(); } - public loadPage = (page: string): Page => { + public loadPage = async (page: string): Promise<Page> => { let route = `/${page.replace(/\.[^.]*$/,'')}`; let name = /[^/]*$/.exec(route)[0]; let originalPath = page; let fullPath = `${this.pagesPath}/${page}` let buildPath = `${process.env.OUTPUT_DIR}/${route}.html` - let view = `${route}.ejs` + let view = `${route}` let raw: string; try { raw = loadRaw(fullPath); @@ -70,7 +75,7 @@ export class PageDirectory { config: {} } - parsePage(this.pages[route]); + await parsePage(this.pages[route]); return this.pages[route]; } |
