-
-
Notifications
You must be signed in to change notification settings - Fork 8.8k
/
Copy pathindex.ts
59 lines (52 loc) · 1.51 KB
/
index.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import fs from 'fs-extra';
import path from 'path';
import logger from '@docusaurus/logger';
import createSitemap from './createSitemap';
import type {PluginOptions, Options} from './options';
import type {LoadContext, Plugin} from '@docusaurus/types';
const PluginName = 'docusaurus-plugin-sitemap';
export default function pluginSitemap(
context: LoadContext,
options: PluginOptions,
): Plugin<void> | null {
if (context.siteConfig.future.experimental_router === 'hash') {
logger.warn(
`${PluginName} does not support the Hash Router and will be disabled.`,
);
return null;
}
return {
name: PluginName,
async postBuild({siteConfig, routes, outDir, routesBuildMetadata}) {
if (siteConfig.noIndex) {
return;
}
// Generate sitemap.
const generatedSitemap = await createSitemap({
siteConfig,
routes,
routesBuildMetadata,
options,
});
if (!generatedSitemap) {
return;
}
// Write sitemap file.
const sitemapPath = path.join(outDir, options.filename);
try {
await fs.outputFile(sitemapPath, generatedSitemap);
} catch (err) {
logger.error('Writing sitemap failed.');
throw err;
}
},
};
}
export {validateOptions} from './options';
export type {PluginOptions, Options};