跳到主要内容
版本:2.4.3

主题配置

This configuration applies to all main themes.

Common

Color mode

经典主题默认提供浅色主题和暗黑主题,用户可以通过导航栏切换。

It is possible to customize the color mode support within the colorMode object.

接受的字段:

参数类型默认值描述
defaultMode'light' | 'dark''light'用户首次访问网站时的色彩模式。
disableSwitchbooleanfalse在导航栏隐藏按钮。 如果你想要只支持一种色彩模式很有用。
respectPrefersColorSchemebooleanfalseWhether to use the prefers-color-scheme media-query, using user system preferences, instead of the hardcoded defaultMode.

示例配置:

docusaurus.config.js
module.exports = {
themeConfig: {
colorMode: {
defaultMode: 'light',
disableSwitch: false,
respectPrefersColorScheme: false,
},
},
};
注意

With respectPrefersColorScheme: true, the defaultMode is overridden by user system preferences.

如果你只想支持一种色彩模式,你大概率会想要忽略用户系统的偏好设置。

Meta image

You can configure a default image that will be used for your meta tag, in particular og:image and twitter:image.

接受的字段:

参数类型默认值描述
imagestringundefined网站的元数据图像 URL。 相对于你的网站的静态目录。 不能是 SVG。 可以是外部链接。

示例配置:

docusaurus.config.js
module.exports = {
themeConfig: {
image: 'img/docusaurus.png',
},
};

Metadata

你可以配置额外的 HTML 元数据(以及覆盖现有数据)。

接受的字段:

参数类型默认值描述
metadataMetadata[][]Any field will be directly passed to the <meta /> tag. Possible fields include id, name, property, content, itemprop, etc.

示例配置:

docusaurus.config.js
module.exports = {
themeConfig: {
metadata: [{name: 'twitter:card', content: 'summary'}],
},
};

Announcement bar

有时候,你需要在网站上发布告示。 这种情况下,你可以添加一个告示条。 这是位于导航栏上方的一个面板,非固定而且可以关闭。 All configuration are in the announcementBar object.

接受的字段:

参数类型默认值描述
idstring'announcement-bar'任何能够唯一标识此信息的值。
contentstring''告示的文字内容。 HTML 也可以识别。
backgroundColorstring'#fff'告示条的背景颜色。
textColorstring'#000'告示的文字颜色。
isCloseablebooleantrue是否可以用 '×' 按钮关闭告示。

示例配置:

docusaurus.config.js
module.exports = {
themeConfig: {
announcementBar: {
id: 'support_us',
content:
'We are looking to revamp our docs, please fill <a target="_blank" rel="noopener noreferrer" href="#">this survey</a>',
backgroundColor: '#fafbfc',
textColor: '#091E42',
isCloseable: false,
},
},
};

接受的字段:

参数类型默认值描述

The logo can be placed in static folder. 图标链接的 URL 会被默认设置为网站的 base URL。 尽管你可以为图标指定自己的 URL,但如果链接是外部的,它会打开一个新标签页。 此外,你还可以覆盖图标链接的 target 属性值,如果你把文档网站托管在主网站的一个子目录中,这个配置会很有用。这种情况下,你可能不需要在链接到主网站的时候打开新标签页。

为了改善暗黑模式支持,你也可以为暗黑模式设置一个不同的图标。

接受的字段:

参数类型默认值描述

示例配置:

docusaurus.config.js
module.exports = {
themeConfig: {
navbar: {
title: '网站标题',
logo: {
alt: 'Site Logo',
src: 'img/logo.svg',
srcDark: 'img/logo_dark.svg',
href: 'https://docusaurus.io/',
target: '_self',
width: 32,
height: 32,
className: 'custom-navbar-logo-class',
style: {border: 'solid red'},
},
},
},
};

You can add items to the navbar via themeConfig.navbar.items.

docusaurus.config.js
module.exports = {
themeConfig: {
navbar: {
items: [
{
type: 'doc',
position: 'left',
docId: 'introduction',
label: '文档',
},
{to: 'blog', label: '博客', position: 'left'},
{
type: 'docsVersionDropdown',
position: 'right',
},
{
type: 'localeDropdown',
position: 'right',
},
{
href: 'https://github.com/facebook/docusaurus',
position: 'right',
className: 'header-github-link',
'aria-label': 'GitHub 仓库',
},
],
},
},
};

The items can have different behaviors based on the type field. 下面的部分会为你介绍所有的导航栏项目类型。

导航栏项目默认是一个普通链接(内部或外部均可)。

React Router should automatically apply active link styling to links, but you can use activeBasePath in edge cases. For cases in which a link should be active on several different paths (such as when you have multiple doc folders under the same sidebar), you can use activeBaseRegex. activeBaseRegex is a more flexible alternative to activeBasePath and takes precedence over it -- Docusaurus parses it into a regular expression that is tested against the current URL.

Outbound (external) links automatically get target="_blank" rel="noopener noreferrer" attributes.

接受的字段:

参数类型默认值描述
备注

除了上面的字段外,你可以指定其他任何 HTML 链接接受的属性。

示例配置:

docusaurus.config.js
module.exports = {
themeConfig: {
navbar: {
items: [
{
to: 'docs/introduction',
// Only one of "to" or "href" should be used
// href: 'https://www.facebook.com',
label: 'Introduction',
// Only one of "label" or "html" should be used
// html: '<b>Introduction</b>'
position: 'left',
activeBaseRegex: 'docs/(next|v8)',
target: '_blank',
},
],
},
},
};

Navbar items of the type dropdown has the additional items field, an inner array of navbar items.

Navbar dropdown items only accept the following "link-like" item types:

Note that the dropdown base item is a clickable link as well, so this item can receive any of the props of a plain navbar link.

接受的字段:

参数类型默认值描述

示例配置:

docusaurus.config.js
module.exports = {
themeConfig: {
navbar: {
items: [
{
type: 'dropdown',
label: '社区',
position: 'left',
items: [
{
label: 'Facebook',
href: 'https://www.facebook.com',
},
{
type: 'doc',
label: '社交',
docId: 'social',
},
// ... more items
],
},
],
},
},
};

If you want to link to a specific doc, this special navbar item type will render the link to the doc of the provided docId. It will get the class navbar__link--active as long as you browse a doc of the same sidebar.

接受的字段:

参数类型默认值描述

示例配置:

docusaurus.config.js
module.exports = {
themeConfig: {
navbar: {
items: [
{
type: 'doc',
position: 'left',
docId: 'introduction',
label: '文档',
},
],
},
},
};

你可以将一个导航栏项目链接到某个给定侧边栏的第一个文档链接(可能是文档或者生成类别索引),而不需要硬编码一个文档 ID。

接受的字段:

参数类型默认值描述
提示

如果你的侧边栏经常更新而且顺序不稳定,请使用这个导航栏项目类型。

示例配置:

docusaurus.config.js
module.exports = {
themeConfig: {
navbar: {
items: [
{
type: 'docSidebar',
position: 'left',
sidebarId: 'api',
label: 'API',
},
],
},
},
};
sidebars.js
module.exports = {
tutorial: [
{
type: 'autogenerated',
dirName: 'guides',
},
],
api: [
'cli', // 导航栏项会链接到这篇文档
'docusaurus-core',
{
type: 'autogenerated',
dirName: 'api',
},
],
};

如果你使用文档版本化,这个特别的导航栏项目类型会渲染一个下拉菜单,包含你的网站的所有可用版本。

用户可以从一个版本切换到另一个版本。 而仍然保持在同一篇文档上(只要文档 ID 在版本之间保持不变)。

接受的字段:

参数类型默认值描述

示例配置:

docusaurus.config.js
module.exports = {
themeConfig: {
navbar: {
items: [
{
type: 'docsVersionDropdown',
position: 'left',
dropdownItemsAfter: [{to: '/versions', label: '所有版本'}],
dropdownActiveClassDisabled: true,
},
],
},
},
};

如果你使用文档版本化,这个特别的的导航栏项目类型会链接到你的文档的活跃版本(正浏览的版本;取决于当前的 URL)。如果没有版本处于活跃状态,则链接到最新版本。

接受的字段:

参数类型默认值描述

示例配置:

docusaurus.config.js
module.exports = {
themeConfig: {
navbar: {
items: [
{
type: 'docsVersion',
position: 'left',
to: '/path',
label: '标签',
},
],
},
},
};

If you use the i18n feature, this special navbar item type will render a dropdown with all your site's available locales.

用户能够从一种语言切换到另一种语言,同时保持在同一个页面上。

接受的字段:

参数类型默认值描述

示例配置:

docusaurus.config.js
module.exports = {
themeConfig: {
navbar: {
items: [
{
type: 'localeDropdown',
position: 'left',
dropdownItemsAfter: [
{
to: 'https://my-site.com/help-us-translate',
label: '帮助我们翻译',
},
],
},
],
},
},
};

If you use the search, the search bar will be the rightmost element in the navbar.

然而,通过这个特别的导航栏项目类型,你可以更改默认位置。

参数类型默认值描述
docusaurus.config.js
module.exports = {
themeConfig: {
navbar: {
items: [
{
type: 'search',
position: 'right',
},
],
},
},
};

你也可以用这个导航栏项目类型在导航栏中渲染自己的 HTML 标记。

参数类型默认值描述
docusaurus.config.js
module.exports = {
themeConfig: {
navbar: {
items: [
{
type: 'html',
position: 'right',
value: '<button>Give feedback</button>',
},
],
},
},
};

Auto-hide sticky navbar

你可以启用这个很酷的界面功能,它会在用户开始向下滚动页面时,自动隐藏导航栏,当用户向上滚动时再显示它。

docusaurus.config.js
module.exports = {
themeConfig: {
navbar: {
hideOnScroll: true,
},
},
};

你可以把导航栏样式设置为静态,而不禁用主题切换能力。 无论用户选择哪个主题,所选的样式都会被应用。

Currently, there are two possible style options: dark and primary (based on the --ifm-color-primary color). You can see the styles preview in the Infima documentation.

docusaurus.config.js
module.exports = {
themeConfig: {
navbar: {
style: 'primary',
},
},
};

CodeBlock

Docusaurus uses Prism React Renderer to highlight code blocks. All configuration are in the prism object.

接受的字段:

参数类型默认值描述
themePrismThemepalenight用于浅色模式下代码块的 Prism 主题。
darkThemePrismThemepalenight用于暗黑模式下代码块的 Prism 主题。
defaultLanguagestringundefined项目应该出现在导航栏的哪一侧。
magicCommentsMagicCommentConfig[]see belowThe list of magic comments.
type MagicCommentConfig = {
className: string;
line?: string;
block?: {start: string; end: string};
};
const defaultMagicComments = [
{
className: 'theme-code-block-highlighted-line',
line: 'highlight-next-line',
block: {start: 'highlight-start', end: 'highlight-end'},
},
];

Theme

By default, we use Palenight as syntax highlighting theme. You can specify a custom theme from the list of available themes. 你也可以在网站处于暗黑模式时,使用不同的语法高亮主题。

示例配置:

docusaurus.config.js
module.exports = {
themeConfig: {
prism: {
theme: require('prism-react-renderer/themes/github'),
darkTheme: require('prism-react-renderer/themes/dracula'),
},
},
};
备注

如果你使用了 Markdown 的行高亮语法,你可能需要为暗黑模式的语法高亮主题指定不同的行高亮背景颜色。 Refer to the docs for guidance.

Default language

你可以设置代码块的默认语言。如果代码块开头的三个反引号(就是 ```)后没有添加语言,会使用默认语言。 Note that a valid language name must be passed.

示例配置:

docusaurus.config.js
module.exports = {
themeConfig: {
prism: {
defaultLanguage: 'javascript',
},
},
};

You can add logo and a copyright to the footer via themeConfig.footer. Logo can be placed in static folder. 图标 URL 的工作方式和导航栏图标相同。

接受的字段:

参数类型默认值描述

示例配置:

docusaurus.config.js
module.exports = {
themeConfig: {
footer: {
logo: {
alt: 'Meta 开源图标',
src: 'img/meta_oss_logo.png',
href: 'https://opensource.fb.com',
width: 160,
height: 51,
},
copyright: `版权所有 © ${new Date().getFullYear()} 我的项目. 使用 Docusaurus 构建.`,
},
},
};

You can add links to the footer via themeConfig.footer.links. There are two types of footer configurations: multi-column footers and simple footers.

Multi-column footer links have a title and a list of FooterItems for each column.

参数类型默认值描述

Accepted fields of each FooterItem:

参数类型默认值描述

多列页脚配置示例:

docusaurus.config.js
module.exports = {
footer: {
links: [
{
title: 'Docs',
items: [
{
label: 'Style Guide',
to: 'docs/',
},
{
label: 'Second Doc',
to: 'docs/doc2/',
},
],
},
{
title: 'Community',
items: [
{
label: 'Stack Overflow',
href: 'https://stackoverflow.com/questions/tagged/docusaurus',
},
{
label: 'Discord',
href: 'https://discordapp.com/invite/docusaurus',
},
{
label: 'Twitter',
href: 'https://twitter.com/docusaurus',
},
{
html: `
<a href="https://www.netlify.com" target="_blank" rel="noreferrer noopener" aria-label="Deploys by Netlify">
<img src="https://www.netlify.com/img/global/badges/netlify-color-accent.svg" alt="Deploys by Netlify" width="114" height="51" />
</a>
`,
},
],
},
],
},
};

A simple footer just has a list of FooterItems displayed in a row.

简单页脚配置示例:

docusaurus.config.js
module.exports = {
footer: {
links: [
{
label: 'Stack Overflow',
href: 'https://stackoverflow.com/questions/tagged/docusaurus',
},
{
label: 'Discord',
href: 'https://discordapp.com/invite/docusaurus',
},
{
label: 'Twitter',
href: 'https://twitter.com/docusaurus',
},
{
html: `
<a href="https://www.netlify.com" target="_blank" rel="noreferrer noopener" aria-label="Deploys by Netlify">
<img src="https://www.netlify.com/img/global/badges/netlify-color-accent.svg" alt="Deploys by Netlify" width="114" height="51" />
</a>
`,
},
],
},
};

Table of Contents

You can adjust the default table of contents via themeConfig.tableOfContents.

参数类型默认值描述
minHeadingLevelnumber2目录中显示的最小标题层级。 必须介于 2 到 6 之间,并且小于等于最大值。
maxHeadingLevelnumber3目录显示的最大标题层级。 必须是 2 到 6 之间的整数。

示例配置:

docusaurus.config.js
module.exports = {
themeConfig: {
tableOfContents: {
minHeadingLevel: 2,
maxHeadingLevel: 5,
},
},
};

Hooks

useColorMode

一个用于访问色彩模式 context 的 React 钩子。 这个 context 包含了用于设置浅色/深色模式的函数,以及一个布尔属性,表明现在使用的是哪个模式。

示例用法:

import React from 'react';
import {useColorMode} from '@docusaurus/theme-common';

const Example = () => {
const {colorMode, setColorMode} = useColorMode();

return <h1>Dark mode is now {colorMode === 'dark' ? 'on' : 'off'}</h1>;
};
备注

The component calling useColorMode must be a child of the Layout component.

function ExamplePage() {
return (
<Layout>
<Example />
</Layout>
);
}

i18n

Read the i18n introduction first.

Translation files location

  • Base path: website/i18n/[locale]/docusaurus-theme-[themeName]
  • Multi-instance path: N/A
  • JSON files: extracted with docusaurus write-translations
  • Markdown files: N/A

Example file-system structure

website/i18n/[语言]/docusaurus-theme-classic

# 主题翻译
├── navbar.json
└── footer.json