mirror of
https://github.com/facebook/docusaurus.git
synced 2025-04-29 18:27:56 +02:00
743 lines
22 KiB
Text
743 lines
22 KiB
Text
---
|
|
sidebar_position: 0
|
|
description: API reference for Docusaurus configuration file.
|
|
slug: /api/docusaurus-config
|
|
---
|
|
|
|
# `docusaurus.config.js`
|
|
|
|
import APITable from '@site/src/components/APITable';
|
|
|
|
:::info
|
|
|
|
Refer to the Getting Started [**Configuration**](../configuration.mdx) for examples.
|
|
|
|
:::
|
|
|
|
## Overview {#overview}
|
|
|
|
`docusaurus.config.js` contains configurations for your site and is placed in the root directory of your site.
|
|
|
|
:::note
|
|
|
|
With a [TypeScript](../typescript-support.mdx) Docusaurus codebase your config file may be called `docusaurus.config.ts`. The syntax is broadly identical to the `js` config file with the addition of types. You can see an example on the [Docusaurus Website](https://github.com/facebook/docusaurus/blob/main/website/docusaurus.config.ts) itself.
|
|
|
|
:::
|
|
|
|
This file is run in Node.js and should export a site configuration object, or a function that creates it.
|
|
|
|
The `docusaurus.config.js` file supports:
|
|
|
|
- [**ES Modules**](https://flaviocopes.com/es-modules/)
|
|
- [**CommonJS**](https://flaviocopes.com/commonjs/)
|
|
- [**TypeScript**](../typescript-support.mdx#typing-config)
|
|
|
|
Examples:
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
title: 'Docusaurus',
|
|
url: 'https://docusaurus.io',
|
|
// your site config ...
|
|
};
|
|
```
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default async function createConfigAsync() {
|
|
return {
|
|
title: 'Docusaurus',
|
|
url: 'https://docusaurus.io',
|
|
// your site config ...
|
|
};
|
|
}
|
|
```
|
|
|
|
:::tip
|
|
|
|
Refer to [**Syntax to declare `docusaurus.config.js`**](../configuration.mdx#syntax-to-declare-docusaurus-config) for a more exhaustive list of examples and explanations.
|
|
|
|
:::
|
|
|
|
## Required fields {#required-fields}
|
|
|
|
### `title` {#title}
|
|
|
|
- Type: `string`
|
|
|
|
Title for your website. Will be used in metadata and as browser tab title.
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
title: 'Docusaurus',
|
|
};
|
|
```
|
|
|
|
### `url` {#url}
|
|
|
|
- Type: `string`
|
|
|
|
URL for your website. This can also be considered the top-level hostname. For example, `https://facebook.github.io` is the URL of https://facebook.github.io/metro/, and `https://docusaurus.io` is the URL for https://docusaurus.io. This field is related to the [`baseUrl`](#baseUrl) field.
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
url: 'https://docusaurus.io',
|
|
};
|
|
```
|
|
|
|
### `baseUrl` {#baseUrl}
|
|
|
|
- Type: `string`
|
|
|
|
Base URL for your site. Can be considered as the path after the host. For example, `/metro/` is the base URL of https://facebook.github.io/metro/. For URLs that have no path, the baseUrl should be set to `/`. This field is related to the [`url`](#url) field. Always has both leading and trailing slash.
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
baseUrl: '/',
|
|
};
|
|
```
|
|
|
|
## Optional fields {#optional-fields}
|
|
|
|
### `favicon` {#favicon}
|
|
|
|
- Type: `string | undefined`
|
|
|
|
Path to your site favicon; must be a URL that can be used in link's href. For example, if your favicon is in `static/img/favicon.ico`:
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
favicon: '/img/favicon.ico',
|
|
};
|
|
```
|
|
|
|
### `trailingSlash` {#trailingSlash}
|
|
|
|
- Type: `boolean | undefined`
|
|
|
|
Allow to customize the presence/absence of a trailing slash at the end of URLs/links, and how static HTML files are generated:
|
|
|
|
- `undefined` (default): keeps URLs untouched, and emit `/docs/myDoc/index.html` for `/docs/myDoc.md`
|
|
- `true`: add trailing slashes to URLs/links, and emit `/docs/myDoc/index.html` for `/docs/myDoc.md`
|
|
- `false`: remove trailing slashes from URLs/links, and emit `/docs/myDoc.html` for `/docs/myDoc.md`
|
|
|
|
:::tip
|
|
|
|
Each static hosting provider serves static files differently (this behavior may even change over time).
|
|
|
|
Refer to the [deployment guide](../deployment.mdx) and [slorber/trailing-slash-guide](https://github.com/slorber/trailing-slash-guide) to choose the appropriate setting.
|
|
|
|
:::
|
|
|
|
### `i18n` {#i18n}
|
|
|
|
- Type: `Object`
|
|
|
|
The i18n configuration object to [localize your site](../i18n/i18n-introduction.mdx).
|
|
|
|
Example:
|
|
|
|
{/* cSpell:ignore فارسی */}
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
i18n: {
|
|
defaultLocale: 'en',
|
|
locales: ['en', 'fa'],
|
|
path: 'i18n',
|
|
localeConfigs: {
|
|
en: {
|
|
label: 'English',
|
|
direction: 'ltr',
|
|
htmlLang: 'en-US',
|
|
calendar: 'gregory',
|
|
path: 'en',
|
|
},
|
|
fa: {
|
|
label: 'فارسی',
|
|
direction: 'rtl',
|
|
htmlLang: 'fa-IR',
|
|
calendar: 'persian',
|
|
path: 'fa',
|
|
},
|
|
},
|
|
},
|
|
};
|
|
```
|
|
|
|
- `defaultLocale`: The locale that (1) does not have its name in the base URL (2) gets started with `docusaurus start` without `--locale` option (3) will be used for the `<link hrefLang="x-default">` tag
|
|
- `locales`: List of locales deployed on your site. Must contain `defaultLocale`.
|
|
- `path`: Root folder which all locale folders are relative to. Can be absolute or relative to the config file. Defaults to `i18n`.
|
|
- `localeConfigs`: Individual options for each locale.
|
|
- `label`: The label displayed for this locale in the locales dropdown.
|
|
- `direction`: `ltr` (default) or `rtl` (for [right-to-left languages](https://developer.mozilla.org/en-US/docs/Glossary/rtl) like Farsi, Arabic, Hebrew, etc.). Used to select the locale's CSS and HTML meta attribute.
|
|
- `htmlLang`: BCP 47 language tag to use in `<html lang="...">` (or any other DOM tag name) and in `<link ... hreflang="...">`
|
|
- `calendar`: the [calendar](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/calendar) used to calculate the date era. Note that it doesn't control the actual string displayed: `MM/DD/YYYY` and `DD/MM/YYYY` are both `gregory`. To choose the format (`DD/MM/YYYY` or `MM/DD/YYYY`), set your locale name to `en-GB` or `en-US` (`en` means `en-US`).
|
|
- `path`: Root folder that all plugin localization folders of this locale are relative to. Will be resolved against `i18n.path`. Defaults to the locale's name. Note: this has no effect on the locale's `baseUrl`—customization of base URL is a work-in-progress.
|
|
|
|
### `future` {#future}
|
|
|
|
- Type: `Object`
|
|
|
|
The `future` configuration object permits to opt-in for upcoming/unstable/experimental Docusaurus features that are not ready for prime time.
|
|
|
|
It is also a way to opt-in for upcoming breaking changes coming in the next major versions, enabling you to prepare your site for the next version while staying on the previous one. The [Remix Future Flags blog post](https://remix.run/blog/future-flags) greatly explains this idea.
|
|
|
|
:::danger Breaking changes in minor versions
|
|
|
|
Features prefixed by `experimental_` or `unstable_` are subject to changes in **minor versions**, and not considered as [Semantic Versioning breaking changes](/community/release-process).
|
|
|
|
Features prefixed by `v<MajorVersion>_` (`v6_` `v7_`, etc.) are future flags that are expected to be turned on by default in the next major versions. These are less likely to change, but we keep the possibility to do so.
|
|
|
|
`future` API breaking changes should be easy to handle, and will be documented in minor/major version blog posts.
|
|
|
|
:::
|
|
|
|
Example:
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
future: {
|
|
experimental_storage: {
|
|
type: 'localStorage',
|
|
namespace: true,
|
|
},
|
|
experimental_router: 'hash',
|
|
},
|
|
};
|
|
```
|
|
|
|
- `experimental_storage`: Site-wide browser storage options that theme authors should strive to respect.
|
|
- `type`: The browser storage theme authors should use. Possible values are `localStorage` and `sessionStorage`. Defaults to `localStorage`.
|
|
- `namespace`: Whether to namespace the browser storage keys to avoid storage key conflicts when Docusaurus sites are hosted under the same domain, or on localhost. Possible values are `string | boolean`. The namespace is appended at the end of the storage keys `key-namespace`. Use `true` to automatically generate a random namespace from your site `url + baseUrl`. Defaults to `false` (no namespace, historical behavior).
|
|
- `experimental_router`: The router type to use. Possible values are `browser` and `hash`. Defaults to `browser`. The `hash` router is only useful for rare cases where you want to opt-out of static site generation, have a fully client-side app with a single `index.html` entrypoint file. This can be useful to distribute a Docusaurus site as a `.zip` archive that you can [browse locally without running a web server](https://github.com/facebook/docusaurus/issues/3825).
|
|
|
|
### `noIndex` {#noIndex}
|
|
|
|
- Type: `boolean`
|
|
|
|
This option adds `<meta name="robots" content="noindex, nofollow">` to every page to tell search engines to avoid indexing your site (more information [here](https://moz.com/learn/seo/robots-meta-directives)).
|
|
|
|
Example:
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
noIndex: true, // Defaults to `false`
|
|
};
|
|
```
|
|
|
|
### `onBrokenLinks` {#onBrokenLinks}
|
|
|
|
- Type: `'ignore' | 'log' | 'warn' | 'throw'`
|
|
|
|
The behavior of Docusaurus when it detects any broken link.
|
|
|
|
By default, it throws an error, to ensure you never ship any broken link.
|
|
|
|
:::note
|
|
|
|
The broken links detection is only available for a production build (`docusaurus build`).
|
|
|
|
:::
|
|
|
|
### `onBrokenAnchors` {#onBrokenAnchors}
|
|
|
|
- Type: `'ignore' | 'log' | 'warn' | 'throw'`
|
|
|
|
The behavior of Docusaurus when it detects any broken anchor declared with the `Heading` component of Docusaurus.
|
|
|
|
By default, it prints a warning, to let you know about your broken anchors.
|
|
|
|
### `onBrokenMarkdownLinks` {#onBrokenMarkdownLinks}
|
|
|
|
- Type: `'ignore' | 'log' | 'warn' | 'throw'`
|
|
|
|
The behavior of Docusaurus when it detects any broken Markdown link.
|
|
|
|
By default, it prints a warning, to let you know about your broken Markdown link.
|
|
|
|
### `onDuplicateRoutes` {#onDuplicateRoutes}
|
|
|
|
- Type: `'ignore' | 'log' | 'warn' | 'throw'`
|
|
|
|
The behavior of Docusaurus when it detects any [duplicate routes](/guides/creating-pages.mdx#duplicate-routes).
|
|
|
|
By default, it displays a warning after you run `yarn start` or `yarn build`.
|
|
|
|
### `tagline` {#tagline}
|
|
|
|
- Type: `string`
|
|
|
|
The tagline for your website.
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
tagline:
|
|
'Docusaurus makes it easy to maintain Open Source documentation websites.',
|
|
};
|
|
```
|
|
|
|
### `organizationName` {#organizationName}
|
|
|
|
- Type: `string`
|
|
|
|
The GitHub user or organization that owns the repository. You don't need this if you are not using the `docusaurus deploy` command.
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
// Docusaurus' organization is facebook
|
|
organizationName: 'facebook',
|
|
};
|
|
```
|
|
|
|
### `projectName` {#projectName}
|
|
|
|
- Type: `string`
|
|
|
|
The name of the GitHub repository. You don't need this if you are not using the `docusaurus deploy` command.
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
projectName: 'docusaurus',
|
|
};
|
|
```
|
|
|
|
### `deploymentBranch` {#deploymentBranch}
|
|
|
|
- Type: `string`
|
|
|
|
The name of the branch to deploy the static files to. You don't need this if you are not using the `docusaurus deploy` command.
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
deploymentBranch: 'gh-pages',
|
|
};
|
|
```
|
|
|
|
### `githubHost` {#githubHost}
|
|
|
|
- Type: `string`
|
|
|
|
The hostname of your server. Useful if you are using GitHub Enterprise. You don't need this if you are not using the `docusaurus deploy` command.
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
githubHost: 'github.com',
|
|
};
|
|
```
|
|
|
|
### `githubPort` {#githubPort}
|
|
|
|
- Type: `string`
|
|
|
|
The port of your server. Useful if you are using GitHub Enterprise. You don't need this if you are not using the `docusaurus deploy` command.
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
githubPort: '22',
|
|
};
|
|
```
|
|
|
|
### `themeConfig` {#themeConfig}
|
|
|
|
- Type: `Object`
|
|
|
|
The [theme configuration](./themes/theme-configuration.mdx) object to customize your site UI like navbar and footer.
|
|
|
|
Example:
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
themeConfig: {
|
|
docs: {
|
|
sidebar: {
|
|
hideable: false,
|
|
autoCollapseCategories: false,
|
|
},
|
|
},
|
|
colorMode: {
|
|
defaultMode: 'light',
|
|
disableSwitch: false,
|
|
respectPrefersColorScheme: true,
|
|
},
|
|
navbar: {
|
|
title: 'Site Title',
|
|
logo: {
|
|
alt: 'Site Logo',
|
|
src: 'img/logo.svg',
|
|
width: 32,
|
|
height: 32,
|
|
},
|
|
items: [
|
|
{
|
|
to: 'docs/docusaurus.config.js',
|
|
activeBasePath: 'docs',
|
|
label: 'docusaurus.config.js',
|
|
position: 'left',
|
|
},
|
|
// ... other links
|
|
],
|
|
},
|
|
footer: {
|
|
style: 'dark',
|
|
links: [
|
|
{
|
|
title: 'Docs',
|
|
items: [
|
|
{
|
|
label: 'Docs',
|
|
to: 'docs/doc1',
|
|
},
|
|
],
|
|
},
|
|
// ... other links
|
|
],
|
|
logo: {
|
|
alt: 'Meta Open Source Logo',
|
|
src: 'img/meta_oss_logo.png',
|
|
href: 'https://opensource.fb.com',
|
|
width: 160,
|
|
height: 51,
|
|
},
|
|
copyright: `Copyright © ${new Date().getFullYear()} Facebook, Inc.`, // You can also put own HTML here
|
|
},
|
|
},
|
|
};
|
|
```
|
|
|
|
### `plugins` {#plugins}
|
|
|
|
- Type: `PluginConfig[]`
|
|
|
|
```ts
|
|
type PluginConfig = string | [string, any] | PluginModule | [PluginModule, any];
|
|
```
|
|
|
|
See [plugin method references](./plugin-methods/README.mdx) for the shape of a `PluginModule`.
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
plugins: [
|
|
'docusaurus-plugin-awesome',
|
|
['docusuarus-plugin-confetti', {fancy: false}],
|
|
() => ({
|
|
postBuild() {
|
|
console.log('Build finished');
|
|
},
|
|
}),
|
|
],
|
|
};
|
|
```
|
|
|
|
### `themes` {#themes}
|
|
|
|
- Type: `PluginConfig[]`
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
themes: ['@docusaurus/theme-classic'],
|
|
};
|
|
```
|
|
|
|
### `presets` {#presets}
|
|
|
|
- Type: `PresetConfig[]`
|
|
|
|
```ts
|
|
type PresetConfig = string | [string, any];
|
|
```
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
presets: [],
|
|
};
|
|
```
|
|
|
|
### `markdown` {#markdown}
|
|
|
|
The global Docusaurus Markdown config.
|
|
|
|
- Type: `MarkdownConfig`
|
|
|
|
```ts
|
|
type MarkdownPreprocessor = (args: {
|
|
filePath: string;
|
|
fileContent: string;
|
|
}) => string;
|
|
|
|
type MDX1CompatOptions =
|
|
| boolean
|
|
| {
|
|
comments: boolean;
|
|
admonitions: boolean;
|
|
headingIds: boolean;
|
|
};
|
|
|
|
export type ParseFrontMatter = (params: {
|
|
filePath: string;
|
|
fileContent: string;
|
|
defaultParseFrontMatter: ParseFrontMatter;
|
|
}) => Promise<{
|
|
frontMatter: {[key: string]: unknown};
|
|
content: string;
|
|
}>;
|
|
|
|
type MarkdownAnchorsConfig = {
|
|
maintainCase: boolean;
|
|
};
|
|
|
|
type MarkdownConfig = {
|
|
format: 'mdx' | 'md' | 'detect';
|
|
mermaid: boolean;
|
|
preprocessor?: MarkdownPreprocessor;
|
|
parseFrontMatter?: ParseFrontMatter;
|
|
mdx1Compat: MDX1CompatOptions;
|
|
remarkRehypeOptions: object; // see https://github.com/remarkjs/remark-rehype#options
|
|
anchors: MarkdownAnchorsConfig;
|
|
};
|
|
```
|
|
|
|
Example:
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
markdown: {
|
|
format: 'mdx',
|
|
mermaid: true,
|
|
preprocessor: ({filePath, fileContent}) => {
|
|
return fileContent.replaceAll('{{MY_VAR}}', 'MY_VALUE');
|
|
},
|
|
parseFrontMatter: async (params) => {
|
|
const result = await params.defaultParseFrontMatter(params);
|
|
result.frontMatter.description =
|
|
result.frontMatter.description?.replaceAll('{{MY_VAR}}', 'MY_VALUE');
|
|
return result;
|
|
},
|
|
mdx1Compat: {
|
|
comments: true,
|
|
admonitions: true,
|
|
headingIds: true,
|
|
},
|
|
anchors: {
|
|
maintainCase: true,
|
|
},
|
|
},
|
|
};
|
|
```
|
|
|
|
```mdx-code-block
|
|
<APITable>
|
|
```
|
|
|
|
| Name | Type | Default | Description |
|
|
| --- | --- | --- | --- |
|
|
| `format` | `'mdx' \| 'md' \| 'detect'` | `'mdx'` | The default parser format to use for Markdown content. Using 'detect' will select the appropriate format automatically based on file extensions: `.md` vs `.mdx`. |
|
|
| `mermaid` | `boolean` | `false` | When `true`, allows Docusaurus to render Markdown code blocks with `mermaid` language as Mermaid diagrams. |
|
|
| `preprocessor` | `MarkdownPreprocessor` | `undefined` | Gives you the ability to alter the Markdown content string before parsing. Use it as a last-resort escape hatch or workaround: it is almost always better to implement a Remark/Rehype plugin. |
|
|
| `parseFrontMatter` | `ParseFrontMatter` | `undefined` | Gives you the ability to provide your own front matter parser, or to enhance the default parser. Read our [front matter guide](../guides/markdown-features/markdown-features-intro.mdx#front-matter) for details. |
|
|
| `mdx1Compat` | `MDX1CompatOptions` | `{comments: true, admonitions: true, headingIds: true}` | Compatibility options to make it easier to upgrade to Docusaurus v3+. |
|
|
| `anchors` | `MarkdownAnchorsConfig` | `{maintainCase: false}` | Options to control the behavior of anchors generated from Markdown headings |
|
|
| `remarkRehypeOptions` | `object` | `undefined` | Makes it possible to pass custom [`remark-rehype` options](https://github.com/remarkjs/remark-rehype#options). |
|
|
|
|
```mdx-code-block
|
|
</APITable>
|
|
```
|
|
|
|
### `customFields` {#customFields}
|
|
|
|
Docusaurus guards `docusaurus.config.js` from unknown fields. To add a custom field, define it on `customFields`.
|
|
|
|
- Type: `Object`
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
customFields: {
|
|
admin: 'endi',
|
|
superman: 'lol',
|
|
},
|
|
};
|
|
```
|
|
|
|
Attempting to add unknown fields in the config will lead to errors during build time:
|
|
|
|
```bash
|
|
Error: The field(s) 'foo', 'bar' are not recognized in docusaurus.config.js
|
|
```
|
|
|
|
### `staticDirectories` {#staticDirectories}
|
|
|
|
An array of paths, relative to the site's directory or absolute. Files under these paths will be copied to the build output as-is.
|
|
|
|
- Type: `string[]`
|
|
|
|
Example:
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
staticDirectories: ['static'],
|
|
};
|
|
```
|
|
|
|
### `headTags` {#headTags}
|
|
|
|
An array of tags that will be inserted in the HTML `<head>`. The values must be objects that contain two properties; `tagName` and `attributes`. `tagName` must be a string that determines the tag being created; eg `"link"`. `attributes` must be an attribute-value map.
|
|
|
|
- Type: `{ tagName: string; attributes: Object; }[]`
|
|
|
|
Example:
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
headTags: [
|
|
{
|
|
tagName: 'link',
|
|
attributes: {
|
|
rel: 'icon',
|
|
href: '/img/docusaurus.png',
|
|
},
|
|
},
|
|
],
|
|
};
|
|
```
|
|
|
|
This would become `<link rel="icon" href="img/docusaurus.png" />` in the generated HTML.
|
|
|
|
### `scripts` {#scripts}
|
|
|
|
An array of scripts to load. The values can be either strings or plain objects of attribute-value maps. The `<script>` tags will be inserted in the HTML `<head>`. If you use a plain object, the only required attribute is `src`, and any other attributes are permitted (each one should have boolean/string values).
|
|
|
|
Note that `<script>` added here are render-blocking, so you might want to add `async: true`/`defer: true` to the objects.
|
|
|
|
- Type: `(string | Object)[]`
|
|
|
|
Example:
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
scripts: [
|
|
// String format.
|
|
'https://docusaurus.io/script.js',
|
|
// Object format.
|
|
{
|
|
src: 'https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js',
|
|
async: true,
|
|
},
|
|
],
|
|
};
|
|
```
|
|
|
|
### `stylesheets` {#stylesheets}
|
|
|
|
An array of CSS sources to load. The values can be either strings or plain objects of attribute-value maps. The `<link>` tags will be inserted in the HTML `<head>`. If you use an object, the only required attribute is `href`, and any other attributes are permitted (each one should have boolean/string values).
|
|
|
|
- Type: `(string | Object)[]`
|
|
|
|
Example:
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
stylesheets: [
|
|
// String format.
|
|
'https://docusaurus.io/style.css',
|
|
// Object format.
|
|
{
|
|
href: 'http://mydomain.com/style.css',
|
|
},
|
|
],
|
|
};
|
|
```
|
|
|
|
:::info
|
|
|
|
By default, the `<link>` tags will have `rel="stylesheet"`, but you can explicitly add a custom `rel` value to inject any kind of `<link>` tag, not necessarily stylesheets.
|
|
|
|
:::
|
|
|
|
### `clientModules` {#clientModules}
|
|
|
|
An array of [client modules](../advanced/client.mdx#client-modules) to load globally on your site.
|
|
|
|
Example:
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
clientModules: ['./mySiteGlobalJs.js', './mySiteGlobalCss.css'],
|
|
};
|
|
```
|
|
|
|
### `ssrTemplate` {#ssrTemplate}
|
|
|
|
An HTML template written in [Eta's syntax](https://eta.js.org/docs/syntax#syntax-overview) that will be used to render your application. This can be used to set custom attributes on the `body` tags, additional `meta` tags, customize the `viewport`, etc. Please note that Docusaurus will rely on the template to be correctly structured in order to function properly, once you do customize it, you will have to make sure that your template is compliant with the requirements from upstream.
|
|
|
|
- Type: `string`
|
|
|
|
Example:
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
ssrTemplate: `<!DOCTYPE html>
|
|
<html <%~ it.htmlAttributes %>>
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="generator" content="Docusaurus v<%= it.version %>">
|
|
<% it.metaAttributes.forEach((metaAttribute) => { %>
|
|
<%~ metaAttribute %>
|
|
<% }); %>
|
|
<%~ it.headTags %>
|
|
<% it.stylesheets.forEach((stylesheet) => { %>
|
|
<link rel="stylesheet" href="<%= it.baseUrl %><%= stylesheet %>" />
|
|
<% }); %>
|
|
<% it.scripts.forEach((script) => { %>
|
|
<link rel="preload" href="<%= it.baseUrl %><%= script %>" as="script">
|
|
<% }); %>
|
|
</head>
|
|
<body <%~ it.bodyAttributes %>>
|
|
<%~ it.preBodyTags %>
|
|
<div id="__docusaurus">
|
|
<%~ it.appHtml %>
|
|
</div>
|
|
<% it.scripts.forEach((script) => { %>
|
|
<script src="<%= it.baseUrl %><%= script %>"></script>
|
|
<% }); %>
|
|
<%~ it.postBodyTags %>
|
|
</body>
|
|
</html>`,
|
|
};
|
|
```
|
|
|
|
### `titleDelimiter` {#titleDelimiter}
|
|
|
|
- Type: `string`
|
|
|
|
Will be used as title delimiter in the generated `<title>` tag.
|
|
|
|
Example:
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
titleDelimiter: '🦖', // Defaults to `|`
|
|
};
|
|
```
|
|
|
|
### `baseUrlIssueBanner` {#baseUrlIssueBanner}
|
|
|
|
- Type: `boolean`
|
|
|
|
When enabled, will show a banner in case your site can't load its CSS or JavaScript files, which is a very common issue, often related to a wrong `baseUrl` in site config.
|
|
|
|
Example:
|
|
|
|
```js title="docusaurus.config.js"
|
|
export default {
|
|
baseUrlIssueBanner: true, // Defaults to `true`
|
|
};
|
|
```
|
|
|
|

|
|
|
|
:::warning
|
|
|
|
This banner needs to inline CSS / JS in case all asset loading fails due to wrong base URL.
|
|
|
|
If you have a strict [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP), you should rather disable it.
|
|
|
|
:::
|