From 2ef0e94f7b15777306012fd29daff3aeee096ad5 Mon Sep 17 00:00:00 2001 From: Mister-Hope Date: Wed, 17 Apr 2024 13:27:42 +0800 Subject: [PATCH 1/3] feat(core): support permalink: null in frontmatter to disable permalink --- .../core/src/page/resolvePagePermalink.ts | 29 +++++-------------- packages/shared/src/types/page.ts | 2 +- 2 files changed, 9 insertions(+), 22 deletions(-) diff --git a/packages/core/src/page/resolvePagePermalink.ts b/packages/core/src/page/resolvePagePermalink.ts index de62e61681..b67d257cf8 100644 --- a/packages/core/src/page/resolvePagePermalink.ts +++ b/packages/core/src/page/resolvePagePermalink.ts @@ -25,9 +25,15 @@ export const resolvePagePermalink = ({ return frontmatter.permalink } + if (frontmatter.permalink === null || frontmatter.permalinkPattern === null) { + return null + } + // get permalink pattern - const permalinkPattern = getPermalinkPattern({ app, frontmatter }) - if (permalinkPattern === null) { + const permalinkPattern = + frontmatter.permalinkPattern || app.options.permalinkPattern + + if (!permalinkPattern) { return null } @@ -45,22 +51,3 @@ export const resolvePagePermalink = ({ return ensureLeadingSlash(link) } - -/** - * Get permalink pattern from frontmatter or app options - */ -const getPermalinkPattern = ({ - app, - frontmatter, -}: { - app: App - frontmatter: PageFrontmatter -}): string | null => { - if (frontmatter.permalinkPattern === null) { - return null - } - if (isString(frontmatter.permalinkPattern)) { - return frontmatter.permalinkPattern - } - return app.options.permalinkPattern -} diff --git a/packages/shared/src/types/page.ts b/packages/shared/src/types/page.ts index f05a83ad2c..404d00d826 100644 --- a/packages/shared/src/types/page.ts +++ b/packages/shared/src/types/page.ts @@ -62,7 +62,7 @@ export type PageFrontmatter< head?: HeadConfig[] lang?: string layout?: string - permalink?: string + permalink?: string | null permalinkPattern?: string | null routeMeta?: Record title?: string From 47d6956186b711e088fa4081f174aa296a87acc2 Mon Sep 17 00:00:00 2001 From: Mister-Hope Date: Wed, 17 Apr 2024 21:10:18 +0800 Subject: [PATCH 2/3] test: update test --- .../core/tests/page/resolvePagePermalink.spec.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/packages/core/tests/page/resolvePagePermalink.spec.ts b/packages/core/tests/page/resolvePagePermalink.spec.ts index 46f8d27d70..341d98c005 100644 --- a/packages/core/tests/page/resolvePagePermalink.spec.ts +++ b/packages/core/tests/page/resolvePagePermalink.spec.ts @@ -36,6 +36,21 @@ describe('core > page > resolvePagePermalink', () => { expect(resolved).toBe('/frontmatter') }) + it('should return null', () => { + const resolved = resolvePagePermalink({ + app: appWithPermalinkPattern, + frontmatter: { + permalink: null, + }, + slug: '', + date: '', + pathInferred: '/inferred', + pathLocale: '', + }) + + expect(resolved).toBe(null) + }) + it('should use permalinkPattern in frontmatter', () => { const resolved = resolvePagePermalink({ app, From 2eda29a7e1eeacd5e91a536ad4b393e474c72e72 Mon Sep 17 00:00:00 2001 From: Xinyu Liu Date: Sun, 21 Apr 2024 13:20:11 +0800 Subject: [PATCH 3/3] Update resolvePagePermalink.ts --- packages/core/src/page/resolvePagePermalink.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/core/src/page/resolvePagePermalink.ts b/packages/core/src/page/resolvePagePermalink.ts index b67d257cf8..6a549085f2 100644 --- a/packages/core/src/page/resolvePagePermalink.ts +++ b/packages/core/src/page/resolvePagePermalink.ts @@ -20,20 +20,23 @@ export const resolvePagePermalink = ({ pathInferred: string | null pathLocale: string }): string | null => { - // use permalink in frontmatter directly + // frontmatter.permalink has the highest priority + if (frontmatter.permalink === null) { + return null + } if (isString(frontmatter.permalink)) { return frontmatter.permalink } - if (frontmatter.permalink === null || frontmatter.permalinkPattern === null) { + // frontmatter.permalinkPattern has higher priority than app.options.permalinkPattern + if (frontmatter.permalinkPattern === null) { return null } - // get permalink pattern const permalinkPattern = frontmatter.permalinkPattern || app.options.permalinkPattern - if (!permalinkPattern) { + if (!isString(permalinkPattern)) { return null }