From 8d07dab951edab6397d3f632a9c31f0eda2fd8a5 Mon Sep 17 00:00:00 2001 From: pengzhanbo Date: Fri, 19 Jul 2024 11:57:35 +0800 Subject: [PATCH] perf(theme): optimize auto frontmatter `I/O`, #124 --- theme/src/node/autoFrontmatter/generator.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/theme/src/node/autoFrontmatter/generator.ts b/theme/src/node/autoFrontmatter/generator.ts index 06cf7039..57d1835e 100644 --- a/theme/src/node/autoFrontmatter/generator.ts +++ b/theme/src/node/autoFrontmatter/generator.ts @@ -1,4 +1,4 @@ -import { fs } from 'vuepress/utils' +import { fs, hash } from 'vuepress/utils' import chokidar from 'chokidar' import { createFilter } from 'create-filter' import grayMatter from 'gray-matter' @@ -99,11 +99,16 @@ async function generator(file: AutoFrontmatterMarkdownFile): Promise { const formatter = current?.frontmatter || generate.global const { data, content } = grayMatter(file.content) + const beforeHash = hash(data) + for (const key in formatter) { const value = await formatter[key](data[key], file, data) data[key] = value ?? data[key] } + if (beforeHash === hash(data)) + return + try { const yaml = isEmptyObject(data) ? ''