mirror of
https://github.com/facebook/docusaurus.git
synced 2025-12-26 01:33:02 +00:00
wire VCS api to the sitemap plugin
This commit is contained in:
parent
48098cc3aa
commit
2adad8dc0b
|
|
@ -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 = {
|
||||
|
|
|
|||
|
|
@ -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: {
|
||||
|
|
|
|||
|
|
@ -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<VcsConfig, 'getFileLastUpdateInfo'>,
|
||||
): Promise<number | null | undefined> {
|
||||
// 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<VcsConfig, 'getFileLastUpdateInfo'>;
|
||||
}): Promise<string | null> {
|
||||
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,
|
||||
}),
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue