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) => {