From 614adca45f471d70aabc9e5fa17e41624c8e8a97 Mon Sep 17 00:00:00 2001 From: Reece Dunham Date: Fri, 17 Apr 2020 23:27:11 -0400 Subject: [PATCH] fix(v2): don't include 404 page in sitemaps (#2616) * fix(v2): don't include 404 page in sitemaps Signed-off-by: Reece Dunham * fix: improve implementation as requested Signed-off-by: Reece Dunham * Fix issue with baseUrls --- .../src/__tests__/createSitemap.test.ts | 17 +++++++++++++++- .../src/createSitemap.ts | 20 ++++++++++--------- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/packages/docusaurus-plugin-sitemap/src/__tests__/createSitemap.test.ts b/packages/docusaurus-plugin-sitemap/src/__tests__/createSitemap.test.ts index fb29688d32..8f75ac8fad 100644 --- a/packages/docusaurus-plugin-sitemap/src/__tests__/createSitemap.test.ts +++ b/packages/docusaurus-plugin-sitemap/src/__tests__/createSitemap.test.ts @@ -30,7 +30,22 @@ describe('createSitemap', () => { expect(() => { createSitemap({} as any, [], {} as any); }).toThrowErrorMatchingInlineSnapshot( - `"Url in docusaurus.config.js cannot be empty/undefined"`, + `"url in docusaurus.config.js cannot be empty/undefined"`, ); }); + + test('exclusion of 404 page', () => { + const sitemap = createSitemap( + { + url: 'https://example.com', + } as DocusaurusConfig, + ['/', '/404.html', '/mypage'], + { + cacheTime: 600, + changefreq: 'daily', + priority: 0.7, + }, + ); + expect(sitemap.toString()).not.toContain('404'); + }); }); diff --git a/packages/docusaurus-plugin-sitemap/src/createSitemap.ts b/packages/docusaurus-plugin-sitemap/src/createSitemap.ts index 4f817dbf9c..3d22bb6ea9 100644 --- a/packages/docusaurus-plugin-sitemap/src/createSitemap.ts +++ b/packages/docusaurus-plugin-sitemap/src/createSitemap.ts @@ -16,17 +16,19 @@ export default function createSitemap( ) { const {url: hostname} = siteConfig; if (!hostname) { - throw new Error('Url in docusaurus.config.js cannot be empty/undefined'); + throw new Error('url in docusaurus.config.js cannot be empty/undefined'); } - const urls = routesPaths.map( - (routesPath) => - ({ - url: routesPath, - changefreq: options.changefreq, - priority: options.priority, - } as SitemapItemOptions), - ); + const urls = routesPaths + .filter((route: string) => !route.endsWith('404.html')) + .map( + (routesPath) => + ({ + url: routesPath, + changefreq: options.changefreq, + priority: options.priority, + } as SitemapItemOptions), + ); return sitemap.createSitemap({ hostname,