From 8714d76a0e997865b9285275c32dbf40474a196b Mon Sep 17 00:00:00 2001 From: pengzhanbo Date: Wed, 10 Jul 2024 00:58:19 +0800 Subject: [PATCH] =?UTF-8?q?perf(theme):=20=E4=BC=98=E5=8C=96=20frontmatter?= =?UTF-8?q?=20=E8=87=AA=E5=8A=A8=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- theme/src/node/autoFrontmatter/generator.ts | 5 +++-- theme/src/node/loadConfig/loader.ts | 6 +++--- theme/src/node/theme.ts | 8 ++++---- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/theme/src/node/autoFrontmatter/generator.ts b/theme/src/node/autoFrontmatter/generator.ts index 4de171b4..23a32a30 100644 --- a/theme/src/node/autoFrontmatter/generator.ts +++ b/theme/src/node/autoFrontmatter/generator.ts @@ -69,7 +69,7 @@ export async function generateAFrontmatter(app: App) { ) } -export async function watchAutoFrontmatter(app: App, watchers: any[]) { +export async function watchAutoFrontmatter(app: App, watchers: any[], enable?: () => boolean) { if (!generate) return @@ -80,7 +80,8 @@ export async function watchAutoFrontmatter(app: App, watchers: any[]) { }) watcher.on('add', async (relativePath) => { - if (!generate!.globFilter(relativePath)) + const enabled = enable ? enable() : true + if (!generate!.globFilter(relativePath) || !enabled) return const file = await readMarkdown(app.dir.source(), relativePath) await generator(file) diff --git a/theme/src/node/loadConfig/loader.ts b/theme/src/node/loadConfig/loader.ts index 2b3df684..4a31030b 100644 --- a/theme/src/node/loadConfig/loader.ts +++ b/theme/src/node/loadConfig/loader.ts @@ -41,13 +41,11 @@ export async function initConfigLoader( defaultConfig: ThemeConfig, { configFile, onChange }: InitConfigLoaderOptions = {}, ) { - configFile = await findConfigPath(app, configFile) - const { encrypt, autoFrontmatter, ...localeOptions } = defaultConfig loader = { configFile, dependencies: [], - load: () => compiler(configFile), + load: () => compiler(loader!.configFile), loaded: false, watcher: null, changeEvents: [], @@ -60,6 +58,8 @@ export async function initConfigLoader( }, } + loader.configFile = await findConfigPath(app, configFile) + onChange && loader.changeEvents.push(onChange) const { config, dependencies = [] } = await loader.load() diff --git a/theme/src/node/theme.ts b/theme/src/node/theme.ts index 8986e8f4..7df4abae 100644 --- a/theme/src/node/theme.ts +++ b/theme/src/node/theme.ts @@ -79,10 +79,10 @@ export function plumeTheme(options: PlumeThemeOptions = {}): Theme { onWatched: (app, watchers) => { watchConfigFile(app, watchers) watchPrepare(app, watchers) - const autoFrontmatter = getResolvedThemeConfig().autoFrontmatter ?? pluginOptions.frontmatter - if (autoFrontmatter !== false) { - watchAutoFrontmatter(app, watchers) - } + watchAutoFrontmatter(app, watchers, () => { + const autoFrontmatter = getResolvedThemeConfig().autoFrontmatter ?? pluginOptions.frontmatter + return autoFrontmatter !== false + }) }, extendsPage: async (page) => {