perf: incremental rebuild (--fastRebuild v2 but default) (#1841)
* checkpoint * incremental all the things * properly splice changes array * smol doc update * update docs * make fancy logger dumb in ci
This commit is contained in:
		@@ -9,7 +9,6 @@ import { visit } from "unist-util-visit"
 | 
			
		||||
import { Root, Element, ElementContent } from "hast"
 | 
			
		||||
import { GlobalConfiguration } from "../cfg"
 | 
			
		||||
import { i18n } from "../i18n"
 | 
			
		||||
import { QuartzPluginData } from "../plugins/vfile"
 | 
			
		||||
 | 
			
		||||
interface RenderComponents {
 | 
			
		||||
  head: QuartzComponent
 | 
			
		||||
@@ -25,7 +24,6 @@ interface RenderComponents {
 | 
			
		||||
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")
 | 
			
		||||
@@ -65,17 +63,12 @@ export function pageResources(
 | 
			
		||||
  return resources
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function renderPage(
 | 
			
		||||
function renderTranscludes(
 | 
			
		||||
  root: Root,
 | 
			
		||||
  cfg: GlobalConfiguration,
 | 
			
		||||
  slug: FullSlug,
 | 
			
		||||
  componentData: QuartzComponentProps,
 | 
			
		||||
  components: RenderComponents,
 | 
			
		||||
  pageResources: StaticResources,
 | 
			
		||||
): string {
 | 
			
		||||
  // make a deep copy of the tree so we don't remove the transclusion references
 | 
			
		||||
  // for the file cached in contentMap in build.ts
 | 
			
		||||
  const root = clone(componentData.tree) as Root
 | 
			
		||||
 | 
			
		||||
) {
 | 
			
		||||
  // process transcludes in componentData
 | 
			
		||||
  visit(root, "element", (node, _index, _parent) => {
 | 
			
		||||
    if (node.tagName === "blockquote") {
 | 
			
		||||
@@ -191,6 +184,19 @@ export function renderPage(
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function renderPage(
 | 
			
		||||
  cfg: GlobalConfiguration,
 | 
			
		||||
  slug: FullSlug,
 | 
			
		||||
  componentData: QuartzComponentProps,
 | 
			
		||||
  components: RenderComponents,
 | 
			
		||||
  pageResources: StaticResources,
 | 
			
		||||
): string {
 | 
			
		||||
  // make a deep copy of the tree so we don't remove the transclusion references
 | 
			
		||||
  // for the file cached in contentMap in build.ts
 | 
			
		||||
  const root = clone(componentData.tree) as Root
 | 
			
		||||
  renderTranscludes(root, cfg, slug, componentData)
 | 
			
		||||
 | 
			
		||||
  // set componentData.tree to the edited html that has transclusions rendered
 | 
			
		||||
  componentData.tree = root
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@ const emitThemeChangeEvent = (theme: "light" | "dark") => {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
document.addEventListener("nav", () => {
 | 
			
		||||
  const switchTheme = (e: Event) => {
 | 
			
		||||
  const switchTheme = () => {
 | 
			
		||||
    const newTheme =
 | 
			
		||||
      document.documentElement.getAttribute("saved-theme") === "dark" ? "light" : "dark"
 | 
			
		||||
    document.documentElement.setAttribute("saved-theme", newTheme)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user