mirror of
https://github.com/facebook/docusaurus.git
synced 2025-04-29 10:17:55 +02:00
110 lines
3.6 KiB
Text
110 lines
3.6 KiB
Text
---
|
|
sidebar_position: 10
|
|
slug: /api/plugins/@docusaurus/plugin-sitemap
|
|
---
|
|
|
|
# 📦 plugin-sitemap
|
|
|
|
import APITable from '@site/src/components/APITable';
|
|
|
|
This plugin creates sitemaps for your site so that search engine crawlers can crawl your site more accurately.
|
|
|
|
:::warning production only
|
|
|
|
This plugin is always inactive in development and **only active in production** because it works on the build output.
|
|
|
|
:::
|
|
|
|
## Installation {#installation}
|
|
|
|
```bash npm2yarn
|
|
npm install --save @docusaurus/plugin-sitemap
|
|
```
|
|
|
|
:::tip
|
|
|
|
If you use the preset `@docusaurus/preset-classic`, you don't need to install this plugin as a dependency.
|
|
|
|
You can configure this plugin through the [preset options](../../using-plugins.mdx#docusauruspreset-classic).
|
|
|
|
:::
|
|
|
|
## Configuration {#configuration}
|
|
|
|
Accepted fields:
|
|
|
|
```mdx-code-block
|
|
<APITable>
|
|
```
|
|
|
|
| Name | Type | Default | Description |
|
|
| --- | --- | --- | --- |
|
|
| `lastmod` | `'date' \| 'datetime' \| null` | `null` | `date` is YYYY-MM-DD. `datetime` is a ISO 8601 datetime. `null` is disabled. See [sitemap docs](https://www.sitemaps.org/protocol.html#xmlTagDefinitions). |
|
|
| `changefreq` | `string \| null` | `'weekly'` | See [sitemap docs](https://www.sitemaps.org/protocol.html#xmlTagDefinitions) |
|
|
| `priority` | `number \| null` | `0.5` | See [sitemap docs](https://www.sitemaps.org/protocol.html#xmlTagDefinitions) |
|
|
| `ignorePatterns` | `string[]` | `[]` | A list of glob patterns; matching route paths will be filtered from the sitemap. Note that you may need to include the base URL in here. |
|
|
| `filename` | `string` | `sitemap.xml` | The path to the created sitemap file, relative to the output directory. Useful if you have two plugin instances outputting two files. |
|
|
| `createSitemapItems` | <code>[CreateSitemapItemsFn](#CreateSitemapItemsFn) \| undefined</code> | `undefined` | An optional function which can be used to transform and / or filter the items in the sitemap. |
|
|
|
|
```mdx-code-block
|
|
</APITable>
|
|
```
|
|
|
|
### Types {#types}
|
|
|
|
#### `CreateSitemapItemsFn` {#CreateSitemapItemsFn}
|
|
|
|
```ts
|
|
type CreateSitemapItemsFn = (params: {
|
|
siteConfig: DocusaurusConfig;
|
|
routes: RouteConfig[];
|
|
defaultCreateSitemapItems: CreateSitemapItemsFn;
|
|
}) => Promise<SitemapItem[]>;
|
|
```
|
|
|
|
:::info
|
|
|
|
This plugin also respects some site config:
|
|
|
|
- [`noIndex`](../docusaurus.config.js.mdx#noIndex): results in no sitemap generated
|
|
- [`trailingSlash`](../docusaurus.config.js.mdx#trailingSlash): determines if the URLs in the sitemap have trailing slashes
|
|
|
|
:::
|
|
|
|
:::note About `lastmod`
|
|
|
|
The `lastmod` option will only output a sitemap `<lastmod>` tag if plugins provide [route metadata](../plugin-methods/lifecycle-apis.mdx#addRoute) attributes `sourceFilePath` and/or `lastUpdatedAt`.
|
|
|
|
All the official content plugins provide the metadata for routes backed by a content file (Markdown, MDX or React page components), but it is possible third-party plugin authors do not provide this information, and the plugin will not be able to output a `<lastmod>` tag for their routes.
|
|
|
|
:::
|
|
|
|
### Example configuration {#ex-config}
|
|
|
|
You can configure this plugin through preset options or plugin options.
|
|
|
|
:::tip
|
|
|
|
Most Docusaurus users configure this plugin through the preset options.
|
|
|
|
:::
|
|
|
|
```js config-tabs
|
|
// Preset Options: sitemap
|
|
// Plugin Options: @docusaurus/plugin-sitemap
|
|
|
|
const config = {
|
|
lastmod: 'date',
|
|
changefreq: 'weekly',
|
|
priority: 0.5,
|
|
ignorePatterns: ['/tags/**'],
|
|
filename: 'sitemap.xml',
|
|
createSitemapItems: async (params) => {
|
|
const {defaultCreateSitemapItems, ...rest} = params;
|
|
const items = await defaultCreateSitemapItems(rest);
|
|
return items.filter((item) => !item.url.includes('/page/'));
|
|
},
|
|
};
|
|
```
|
|
|
|
You can find your sitemap at `/sitemap.xml`.
|