From 2e6a675edddd25a71ecfddc73e0e292cb21d5981 Mon Sep 17 00:00:00 2001
From: Aaron Pham <contact@aarnphm.xyz>
Date: Wed, 01 Jan 2025 20:24:32 +0000
Subject: [PATCH] perf: reduce bundle size (closes #1607) (#1689)
---
quartz/components/renderPage.tsx | 33 ++++++++++++++++++++++++++-------
1 files changed, 26 insertions(+), 7 deletions(-)
diff --git a/quartz/components/renderPage.tsx b/quartz/components/renderPage.tsx
index 9c53096..3914411 100644
--- a/quartz/components/renderPage.tsx
+++ b/quartz/components/renderPage.tsx
@@ -8,6 +8,10 @@
import { Root, Element, ElementContent } from "hast"
import { GlobalConfiguration } from "../cfg"
import { i18n } from "../i18n"
+// @ts-ignore
+import mermaidScript from "./scripts/mermaid.inline"
+import mermaidStyle from "./styles/mermaid.inline.scss"
+import { QuartzPluginData } from "../plugins/vfile"
interface RenderComponents {
head: QuartzComponent
@@ -23,12 +27,13 @@
const headerRegex = new RegExp(/h[1-6]/)
export function pageResources(
baseDir: FullSlug | RelativeURL,
+ fileData: QuartzPluginData,
staticResources: StaticResources,
): StaticResources {
const contentIndexPath = joinSegments(baseDir, "static/contentIndex.json")
const contentIndexScript = `const fetchData = fetch("${contentIndexPath}").then(data => data.json())`
- return {
+ const resources: StaticResources = {
css: [
{
content: joinSegments(baseDir, "index.css"),
@@ -48,14 +53,28 @@
script: contentIndexScript,
},
...staticResources.js,
- {
- src: joinSegments(baseDir, "postscript.js"),
- loadTime: "afterDOMReady",
- moduleType: "module",
- contentType: "external",
- },
],
}
+
+ if (fileData.hasMermaidDiagram) {
+ resources.js.push({
+ script: mermaidScript,
+ loadTime: "afterDOMReady",
+ moduleType: "module",
+ contentType: "inline",
+ })
+ resources.css.push({ content: mermaidStyle, inline: true })
+ }
+
+ // NOTE: we have to put this last to make sure spa.inline.ts is the last item.
+ resources.js.push({
+ src: joinSegments(baseDir, "postscript.js"),
+ loadTime: "afterDOMReady",
+ moduleType: "module",
+ contentType: "external",
+ })
+
+ return resources
}
export function renderPage(
--
Gitblit v1.10.0