diff --git a/quartz/plugins/transformers/frontmatter.ts b/quartz/plugins/transformers/frontmatter.ts index c04c52a24..a43b3b566 100644 --- a/quartz/plugins/transformers/frontmatter.ts +++ b/quartz/plugins/transformers/frontmatter.ts @@ -46,12 +46,18 @@ function getAliasSlugs(aliases: string[]): FullSlug[] { const isMd = getFileExtension(alias) === "md" const mockFp = isMd ? alias : alias + ".md" const slug = slugifyFilePath(mockFp as FilePath) - res.push(slug) + pushSlugs(res, slug) } return res } +function pushSlugs(arr: T[], ...items: T[]) { + for (const item of items) { + if (!arr.includes(item)) arr.push(item) + } +} + export const FrontMatter: QuartzTransformerPlugin> = (userOpts) => { const opts = { ...defaultOptions, ...userOpts } return { @@ -84,15 +90,15 @@ export const FrontMatter: QuartzTransformerPlugin> = (userOpts) if (aliases) { data.aliases = aliases // frontmatter file.data.aliases = getAliasSlugs(aliases) - allSlugs.push(...file.data.aliases) + pushSlugs(allSlugs, ...file.data.aliases) } if (data.permalink != null && data.permalink.toString() !== "") { data.permalink = data.permalink.toString() as FullSlug const aliases = file.data.aliases ?? [] - aliases.push(data.permalink) + pushSlugs(aliases, data.permalink) file.data.aliases = aliases - allSlugs.push(data.permalink) + pushSlugs(allSlugs, data.permalink) } const cssclasses = coerceToArray(coalesceAliases(data, ["cssclasses", "cssclass"]))