diff --git a/packages/docusaurus-plugin-sitemap/src/__tests__/createSitemap.test.ts b/packages/docusaurus-plugin-sitemap/src/__tests__/createSitemap.test.ts index 8bece909f3..0e88a757bc 100644 --- a/packages/docusaurus-plugin-sitemap/src/__tests__/createSitemap.test.ts +++ b/packages/docusaurus-plugin-sitemap/src/__tests__/createSitemap.test.ts @@ -6,12 +6,14 @@ */ import {fromPartial} from '@total-typescript/shoehorn'; +import {DEFAULT_VCS_CONFIG} from '@docusaurus/utils'; import createSitemap from '../createSitemap'; import type {PluginOptions} from '../options'; import type {DocusaurusConfig, RouteConfig} from '@docusaurus/types'; const siteConfig: DocusaurusConfig = fromPartial({ url: 'https://example.com', + future: {experimental_vcs: DEFAULT_VCS_CONFIG}, }); const options: PluginOptions = { diff --git a/packages/docusaurus-plugin-sitemap/src/__tests__/createSitemapItem.test.ts b/packages/docusaurus-plugin-sitemap/src/__tests__/createSitemapItem.test.ts index 4aa4df3a8f..d3663a7d53 100644 --- a/packages/docusaurus-plugin-sitemap/src/__tests__/createSitemapItem.test.ts +++ b/packages/docusaurus-plugin-sitemap/src/__tests__/createSitemapItem.test.ts @@ -6,6 +6,7 @@ */ import {fromPartial} from '@total-typescript/shoehorn'; +import {DEFAULT_VCS_CONFIG} from '@docusaurus/utils'; import {createSitemapItem} from '../createSitemapItem'; import {DEFAULT_OPTIONS} from '../options'; import type {PluginOptions} from '../options'; @@ -13,6 +14,7 @@ import type {DocusaurusConfig, RouteConfig} from '@docusaurus/types'; const siteConfig: DocusaurusConfig = fromPartial({ url: 'https://example.com', + future: {experimental_vcs: DEFAULT_VCS_CONFIG}, }); function test(params: { diff --git a/packages/docusaurus-plugin-sitemap/src/createSitemapItem.ts b/packages/docusaurus-plugin-sitemap/src/createSitemapItem.ts index ebd6bba44c..c79994a48f 100644 --- a/packages/docusaurus-plugin-sitemap/src/createSitemapItem.ts +++ b/packages/docusaurus-plugin-sitemap/src/createSitemapItem.ts @@ -6,13 +6,14 @@ */ import {applyTrailingSlash} from '@docusaurus/utils-common'; -import {getLastUpdate, normalizeUrl} from '@docusaurus/utils'; +import {normalizeUrl} from '@docusaurus/utils'; import type {LastModOption, SitemapItem} from './types'; -import type {DocusaurusConfig, RouteConfig} from '@docusaurus/types'; +import type {DocusaurusConfig, RouteConfig, VcsConfig} from '@docusaurus/types'; import type {PluginOptions} from './options'; async function getRouteLastUpdatedAt( route: RouteConfig, + vcs: Pick, ): Promise { // Important to bail-out early here // This can lead to duplicated getLastUpdate() calls and performance problems @@ -24,8 +25,10 @@ async function getRouteLastUpdatedAt( return route.metadata?.lastUpdatedAt; } if (route.metadata?.sourceFilePath) { - const lastUpdate = await getLastUpdate(route.metadata?.sourceFilePath); - return lastUpdate?.lastUpdatedAt ?? null; + const lastUpdateInfo = await vcs.getFileLastUpdateInfo( + route.metadata?.sourceFilePath, + ); + return lastUpdateInfo?.timestamp ?? null; } return undefined; @@ -46,14 +49,16 @@ function formatLastmod(timestamp: number, lastmodOption: LastModOption) { async function getRouteLastmod({ route, lastmod, + vcs, }: { route: RouteConfig; lastmod: LastModOption | null; + vcs: Pick; }): Promise { if (lastmod === null) { return null; } - const lastUpdatedAt = (await getRouteLastUpdatedAt(route)) ?? null; + const lastUpdatedAt = (await getRouteLastUpdatedAt(route, vcs)) ?? null; return lastUpdatedAt ? formatLastmod(lastUpdatedAt, lastmod) : null; } @@ -77,6 +82,10 @@ export async function createSitemapItem({ ]), changefreq, priority, - lastmod: await getRouteLastmod({route, lastmod}), + lastmod: await getRouteLastmod({ + route, + lastmod, + vcs: siteConfig.future.experimental_vcs, + }), }; }