From 660804e3134a7f0e5f00ff55ace767a31c7fb804 Mon Sep 17 00:00:00 2001 From: alzbetka Date: Thu, 8 Jun 2023 14:49:23 +0200 Subject: [PATCH 1/2] add possibility to set lastMod date --- projects/scully-sitemap/README.md | 4 +++- projects/scully-sitemap/src/lib/index.ts | 8 +++++--- projects/scully-sitemap/src/lib/sitemap-config.ts | 5 +++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/projects/scully-sitemap/README.md b/projects/scully-sitemap/README.md index 92a6eb2..121b4ea 100644 --- a/projects/scully-sitemap/README.md +++ b/projects/scully-sitemap/README.md @@ -41,12 +41,14 @@ setPluginConfig(SitemapPlugin, { changeFreq: 'monthly', priority: ['1.0', '0.9', '0.8', '0.7', '0.6', '0.5', '0.4', '0.3', '0.2', '0.1', '0.0'], ignoredRoutes: ['/404'], + lastMod: new Date().toISOString(), routes: { '/products/:productId': { changeFreq: 'daily', priority: '0.9', sitemapFilename: 'sitemap-products.xml', - merge: true + merge: true, + lastMod: new Date().toISOString() }, } }); diff --git a/projects/scully-sitemap/src/lib/index.ts b/projects/scully-sitemap/src/lib/index.ts index 63a14fc..3fe9d1b 100644 --- a/projects/scully-sitemap/src/lib/index.ts +++ b/projects/scully-sitemap/src/lib/index.ts @@ -48,7 +48,8 @@ const configForRoute = (config: SitemapConfig, route: HandledRoute) => { sitemapFilename: routeConfig.sitemapFilename || config.sitemapFilename, merge: routeConfig.merge || config.merge, changeFreq: routeConfig.changeFreq || config.changeFreq, - priority: routeConfig.priority || config.priority + priority: routeConfig.priority || config.priority, + lastMod: routeConfig.lastMod || config.lastMod }; } } @@ -60,7 +61,8 @@ const configForRoute = (config: SitemapConfig, route: HandledRoute) => { sitemapFilename: config.sitemapFilename, merge: config.merge, changeFreq: config.changeFreq, - priority: config.priority + priority: config.priority, + lastMod: config.lastMod }; }; @@ -177,7 +179,7 @@ export const sitemapPlugin = async (routes?: HandledRoute[]): Promise => { map[loc] = { loc, changefreq: routeConfig.changeFreq, - lastmod: today.toISOString(), + lastmod: routeConfig.lastMod ?? today.toISOString(), priority: priorityForLocation(route.route, routeConfig) }; }); diff --git a/projects/scully-sitemap/src/lib/sitemap-config.ts b/projects/scully-sitemap/src/lib/sitemap-config.ts index 075d1b4..28c6225 100644 --- a/projects/scully-sitemap/src/lib/sitemap-config.ts +++ b/projects/scully-sitemap/src/lib/sitemap-config.ts @@ -24,6 +24,8 @@ export class SitemapRoute { /** would you like to append a trailing slash to the url */ trailingSlash?: boolean; + /** Last modification datetime (YYYY-MM-DDTHH:mm:ss.sssZ = date.toISOString()) */ + lastMod?: string; } /** @@ -49,6 +51,9 @@ export class SitemapConfig { /** A list of priorities to set based on number of segments in the route */ priority?: string | string[]; + /** Last modification datetime (YYYY-MM-DDTHH:mm:ss.sssZ = date.toISOString()) */ + lastMod?: string; + /** A list of routes not to include in the sitemap */ ignoredRoutes?: string[]; From f3f773005f98bc9a0530f1ef178a8d4be9ad393a Mon Sep 17 00:00:00 2001 From: alzbetka Date: Tue, 13 Jun 2023 17:55:00 +0200 Subject: [PATCH 2/2] route as regexp --- projects/scully-sitemap/README.md | 2 +- projects/scully-sitemap/src/lib/index.ts | 10 ++++++++-- projects/scully-sitemap/src/lib/sitemap-config.ts | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/projects/scully-sitemap/README.md b/projects/scully-sitemap/README.md index 121b4ea..5caac7d 100644 --- a/projects/scully-sitemap/README.md +++ b/projects/scully-sitemap/README.md @@ -40,7 +40,7 @@ setPluginConfig(SitemapPlugin, { trailingSlash: false, changeFreq: 'monthly', priority: ['1.0', '0.9', '0.8', '0.7', '0.6', '0.5', '0.4', '0.3', '0.2', '0.1', '0.0'], - ignoredRoutes: ['/404'], + ignoredRoutes: ['/404', '/testing/.*'], lastMod: new Date().toISOString(), routes: { '/products/:productId': { diff --git a/projects/scully-sitemap/src/lib/index.ts b/projects/scully-sitemap/src/lib/index.ts index 3fe9d1b..af5e494 100644 --- a/projects/scully-sitemap/src/lib/index.ts +++ b/projects/scully-sitemap/src/lib/index.ts @@ -166,8 +166,14 @@ export const sitemapPlugin = async (routes?: HandledRoute[]): Promise => { const maps = {}; routes.forEach((route: HandledRoute) => { - if ( config.ignoredRoutes && config.ignoredRoutes.includes(route.route) ) { - return; + if ( config.ignoredRoutes ) { + const ignore = config.ignoredRoutes.reduce((prev, curr) => { + if (typeof curr === 'string') { + return prev || route.route === curr; + } + return prev || curr.test(route.route); + }, false); + if (ignore) return; } const routeConfig = configForRoute(config, route); const map = getMapForRoute(maps, routeConfig); diff --git a/projects/scully-sitemap/src/lib/sitemap-config.ts b/projects/scully-sitemap/src/lib/sitemap-config.ts index 28c6225..0861568 100644 --- a/projects/scully-sitemap/src/lib/sitemap-config.ts +++ b/projects/scully-sitemap/src/lib/sitemap-config.ts @@ -55,7 +55,7 @@ export class SitemapConfig { lastMod?: string; /** A list of routes not to include in the sitemap */ - ignoredRoutes?: string[]; + ignoredRoutes?: (string | RegExp)[]; /** If `true`, the plugin will not log status messages to the console. */ suppressLog?: boolean;