主题配置
此配置适用于所有 主主题.
通用
颜色模式
经典主题默认提供亮模式和暗模式支持,用户可以使用导航栏切换。
可以在 colorMode
对象中自定义颜色模式支持。
接受的字段
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
defaultMode | 'light' | 'dark' | 'light' | 用户首次访问网站时的颜色模式。 |
disableSwitch | boolean | false | 隐藏导航栏中的切换按钮。如果您想支持单一颜色模式,此选项非常有用。 |
respectPrefersColorScheme | boolean | false | 是否使用 prefers-color-scheme 媒体查询,使用用户的系统偏好,而不是硬编码的 defaultMode 。 |
示例配置
export default {
themeConfig: {
colorMode: {
defaultMode: 'light',
disableSwitch: false,
respectPrefersColorScheme: false,
},
},
};
使用 respectPrefersColorScheme: true
时,defaultMode
会被用户的系统偏好覆盖。
如果您只想支持一种颜色模式,您可能希望忽略用户的系统偏好。
元图像
您可以配置一个默认图像,该图像将用于您的元标记,特别是 og:image
和 twitter:image
。
接受的字段
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
image | string | undefined | 网站的元图像 URL。相对于网站的“静态”目录。不能是 SVG。也可以是外部 URL。 |
示例配置
export default {
themeConfig: {
image: 'img/docusaurus.png',
},
};
元数据
您可以配置额外的 HTML 元数据(并覆盖现有的元数据)。
接受的字段
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
metadata | Metadata[] | [] | 任何字段将直接传递给 <meta /> 标记。可能的字段包括 id 、name 、property 、content 、itemprop 等。 |
示例配置
export default {
themeConfig: {
metadata: [{name: 'twitter:card', content: 'summary'}],
},
};
公告栏
有时您希望在网站上宣布一些内容。在这种情况下,您可以添加一个公告栏。这是一个非固定且可选的可以关闭的,位于导航栏上方的面板。所有配置都在 announcementBar
对象中。
接受的字段
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
id | string | 'announcement-bar' | 任何标识此消息的值。 |
content | string | '' | 公告的文本内容。将插入 HTML。 |
backgroundColor | string | '#fff' | 整个栏的背景颜色。 |
textColor | string | '#000' | 公告文本颜色。 |
isCloseable | boolean | true | 此公告是否可以通过“×”按钮关闭。 |
示例配置
export default {
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,
},
},
};
插件
我们的 主主题 为 Docusaurus 核心内容插件提供了额外的主题配置选项。
文档
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
versionPersistence | 'localStorage' | 'none' | undefined | 定义浏览器对首选文档版本的持久化。 |
sidebar.hideable | boolean | false | 在侧边栏底部显示隐藏按钮。 |
sidebar.autoCollapseCategories | boolean | false | 自动折叠您导航到的类别所有兄弟类别。 |
示例配置
export default {
themeConfig: {
docs: {
versionPersistence: 'localStorage',
sidebar: {
hideable: false,
autoCollapseCategories: false,
},
},
},
};
博客
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
sidebar.groupByYear | boolean | true | 按年份对侧边栏博客文章进行分组。 |
示例配置
export default {
themeConfig: {
blog: {
sidebar: {
groupByYear: true,
},
},
},
};
导航栏
接受的字段
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
title | string | undefined | 导航栏的标题。 |
logo | 见下文 | undefined | 徽标对象的自定义。 |
items | NavbarItem[] | [] | 导航栏项目的列表。请参阅下面的规范。 |
hideOnScroll | boolean | false | 用户向下滚动时是否隐藏导航栏。 |
style | 'primary' | 'dark' | 与主题相同 | 设置导航栏样式,忽略暗/亮主题。 |
导航栏徽标
徽标可以放在 静态文件夹 中。徽标 URL 默认设置为网站的根 URL。虽然您可以为徽标指定您自己的 URL,但如果它是外部链接,它将在新标签页中打开。此外,您可以覆盖徽标链接的 target 属性的值,如果您将文档网站托管在主网站的子目录中,这将非常有用,在这种情况下,您可能不需要在徽标中链接到主网站,因为它将在新标签页中打开。
为了改善暗模式支持,您还可以为暗模式设置不同的徽标。
接受的字段
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
alt | string | undefined | 徽标图像的 alt 标签。 |
src | string | 必需 | 徽标图像的 URL。默认情况下,会附加根 URL。 |
srcDark | string | logo.src | 在暗模式下使用的备用图像 URL。 |
href | string | siteConfig.baseUrl | 单击徽标时导航到的链接。 |
width | string | number | undefined | 指定 width 属性。 |
height | string | number | undefined | 指定 height 属性。 |
target | string | 根据 href 计算(外部链接将在新标签页中打开,其他链接将在当前标签页中打开)。 | 链接的 target 属性;控制链接是在新标签页中打开、在当前标签页中打开,还是以其他方式打开。 |
className | string | undefined | 应用于图像的 CSS 类。 |
style | object | undefined | CSS 内联样式对象。React/JSX 风格,使用驼峰命名法属性。 |
示例配置
export default {
themeConfig: {
navbar: {
title: 'Site Title',
logo: {
alt: 'Site Logo',
src: 'img/logo.svg',
srcDark: 'img/logo_dark.svg',
href: 'https://docusaurus.org.cn/',
target: '_self',
width: 32,
height: 32,
className: 'custom-navbar-logo-class',
style: {border: 'solid red'},
},
},
},
};
导航栏项目
您可以通过 themeConfig.navbar.items
向导航栏添加项目。
export default {
themeConfig: {
navbar: {
items: [
{
type: 'doc',
position: 'left',
docId: 'introduction',
label: 'Docs',
},
{to: 'blog', label: 'Blog', 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 repository',
},
],
},
},
};
项目可以根据 type
字段具有不同的行为。以下部分将介绍您可用的所有导航栏项目类型。
导航栏链接
默认情况下,导航栏项目是普通链接(内部或外部)。
React Router 应该自动将活动链接样式应用于链接,但在极少数情况下,您可以使用 activeBasePath
。在需要在多个不同路径上使链接处于活动状态的案例中(例如,当您在同一个侧边栏下有多个文档文件夹时),您可以使用 activeBaseRegex
。activeBaseRegex
是 activeBasePath
的更灵活的替代方案,并且优先于它 - Docusaurus 将其解析为正则表达式,该正则表达式将针对当前 URL 进行测试。
出站(外部)链接会自动获得 target="_blank" rel="noopener noreferrer"
属性。
接受的字段
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
type | 'default' | 可选 | 将此项目的类型设置为链接。 |
label | string | 必需 | 要显示的此项目的名称。 |
html | string | 可选 | 与 label 相同,但呈现纯 HTML 而不是文本内容。 |
to | string | 必需 | 客户端路由,用于在网站内导航。根 URL 将自动添加到此值前面。 |
href | string | 必需 | 完整的页面导航,用于导航到网站外部。**只能使用 to 或 href 中的一个。** |
prependBaseUrlToHref | boolean | false | 在 href 值前面添加根 URL。 |
position | 'left' | 'right' | 'left' | 此项目应该出现在导航栏的哪一边。 |
activeBasePath | string | to / href | 在以此路径开头的所有路由上应用活动类样式。这通常是不必要的。 |
activeBaseRegex | string | undefined | 如果需要,是 activeBasePath 的替代方案。 |
className | string | '' | 自定义 CSS 类(用于对任何项目进行样式设置)。 |
除了上述字段之外,您还可以指定可以应用于 HTML 链接的其他任意属性。
示例配置
export default {
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',
},
],
},
},
};
导航栏下拉菜单
类型为 dropdown
的导航栏项目具有额外的 items
字段,这是一个包含导航栏项目的内部数组。
导航栏下拉菜单项目只接受以下 **“链接式”项目类型**
请注意,下拉菜单基项也是一个可点击的链接,因此此项目可以接收 普通导航栏链接 的任何属性。
接受的字段
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
type | 'dropdown' | 可选 | 将此项目的类型设置为下拉菜单。 |
label | string | 必需 | 要显示的此项目的名称。 |
items | LinkLikeItem[] | 必需 | 要包含在下拉菜单中的项目。 |
position | 'left' | 'right' | 'left' | 此项目应该出现在导航栏的哪一边。 |
示例配置
export default {
themeConfig: {
navbar: {
items: [
{
type: 'dropdown',
label: 'Community',
position: 'left',
items: [
{
label: 'Facebook',
href: 'https://www.facebook.com',
},
{
type: 'doc',
label: 'Social',
docId: 'social',
},
// ... more items
],
},
],
},
},
};
导航栏文档链接
如果您要链接到特定文档,此特殊的导航栏项目类型将呈现指向提供的 docId
文档的链接。只要您浏览同一个侧边栏的文档,它就会获得 navbar__link--active
类。
接受的字段
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
type | 'doc' | 必需 | 将此项目的类型设置为文档链接。 |
docId | string | 必需 | 此项目链接到的文档的 ID。 |
label | string | docId | 要显示的此项目的名称。 |
position | 'left' | 'right' | 'left' | 此项目应该出现在导航栏的哪一边。 |
docsPluginId | string | 'default' | 文档所属的文档插件的 ID。 |
示例配置
export default {
themeConfig: {
navbar: {
items: [
{
type: 'doc',
position: 'left',
docId: 'introduction',
label: 'Docs',
},
],
},
},
};
与侧边栏链接的导航栏
您可以将导航栏项链接到给定侧边栏的第一个文档链接(可以是文档链接或生成的类别索引),而无需硬编码文档 ID。
接受的字段
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
type | 'docSidebar' | 必需 | 将此导航栏项的类型设置为侧边栏的第一个文档。 |
sidebarId | string | 必需 | 此项链接到的侧边栏的 ID。 |
label | string | 第一个文档链接的侧边栏标签 | 要显示的此项目的名称。 |
position | 'left' | 'right' | 'left' | 此项目应该出现在导航栏的哪一边。 |
docsPluginId | string | 'default' | 侧边栏所属的文档插件的 ID。 |
如果您的侧边栏经常更新且顺序不稳定,请使用此导航栏项类型。
示例配置
export default {
themeConfig: {
navbar: {
items: [
{
type: 'docSidebar',
position: 'left',
sidebarId: 'api',
label: 'API',
},
],
},
},
};
export default {
tutorial: [
{
type: 'autogenerated',
dirName: 'guides',
},
],
api: [
'cli', // The navbar item will be linking to this doc
'docusaurus-core',
{
type: 'autogenerated',
dirName: 'api',
},
],
};
导航栏文档版本下拉菜单
如果您使用带有版本控制的文档,此特殊的导航栏项类型将呈现一个包含您网站所有可用版本的下拉菜单。
用户可以从一个版本切换到另一个版本,同时保留在同一个文档上(只要文档 ID 在不同版本中保持一致)。
接受的字段
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
type | 'docsVersionDropdown' | 必需 | 将此项的类型设置为文档版本下拉菜单。 |
position | 'left' | 'right' | 'left' | 此项目应该出现在导航栏的哪一边。 |
dropdownItemsBefore | LinkLikeItem[] | [] | 在下拉菜单的开头添加额外的下拉菜单项。 |
dropdownItemsAfter | LinkLikeItem[] | [] | 在下拉菜单的结尾添加额外的下拉菜单项。 |
docsPluginId | string | 'default' | 文档版本控制所属的文档插件的 ID。 |
dropdownActiveClassDisabled | boolean | false | 在浏览文档时不要添加链接活动类。 |
示例配置
export default {
themeConfig: {
navbar: {
items: [
{
type: 'docsVersionDropdown',
position: 'left',
dropdownItemsAfter: [{to: '/versions', label: 'All versions'}],
dropdownActiveClassDisabled: true,
},
],
},
},
};
导航栏文档版本
如果您使用带有版本控制的文档,此特殊的导航栏项类型将链接到您的文档的活动/浏览版本(取决于当前 URL),并回退到最新版本。
接受的字段
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
type | 'docsVersion' | 必需 | 将此项的类型设置为文档版本链接。 |
label | string | 活动/最新版本标签。 | 要显示的此项目的名称。 |
to | string | 活动/最新版本。 | 此项指向的内部链接。 |
position | 'left' | 'right' | 'left' | 此项目应该出现在导航栏的哪一边。 |
docsPluginId | string | 'default' | 文档版本控制所属的文档插件的 ID。 |
示例配置
export default {
themeConfig: {
navbar: {
items: [
{
type: 'docsVersion',
position: 'left',
to: '/path',
label: 'label',
},
],
},
},
};
导航栏语言环境下拉菜单
如果您使用 i18n 功能,此特殊的导航栏项类型将呈现一个包含您网站所有可用语言环境的下拉菜单。
用户可以从一个语言环境切换到另一个语言环境,同时保留在同一页面上。
接受的字段
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
type | 'localeDropdown' | 必需 | 将此项的类型设置为语言环境下拉菜单。 |
position | 'left' | 'right' | 'left' | 此项目应该出现在导航栏的哪一边。 |
dropdownItemsBefore | LinkLikeItem[] | [] | 在下拉菜单的开头添加额外的下拉菜单项。 |
dropdownItemsAfter | LinkLikeItem[] | [] | 在下拉菜单的结尾添加额外的下拉菜单项。 |
queryString | string | undefined | 要附加到 URL 的查询字符串。 |
示例配置
export default {
themeConfig: {
navbar: {
items: [
{
type: 'localeDropdown',
position: 'left',
dropdownItemsAfter: [
{
to: 'https://my-site.com/help-us-translate',
label: 'Help us translate',
},
],
},
],
},
},
};
导航栏搜索
如果您使用 搜索,搜索栏将是导航栏中最右边的元素。
但是,使用此特殊的导航栏项类型,您可以更改默认位置。
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
type | 'search' | 必需 | 将此项的类型设置为搜索栏。 |
position | 'left' | 'right' | 'left' | 此项目应该出现在导航栏的哪一边。 |
className | string | / | 此导航栏项的自定义 CSS 类。 |
export default {
themeConfig: {
navbar: {
items: [
{
type: 'search',
position: 'right',
},
],
},
},
};
带有自定义 HTML 的导航栏
您也可以使用此导航栏项类型在导航栏项内呈现您自己的 HTML 标记。
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
type | 'html' | 必需 | 将此项的类型设置为 HTML 元素。 |
position | 'left' | 'right' | 'left' | 此项目应该出现在导航栏的哪一边。 |
className | string | '' | 此导航栏项的自定义 CSS 类。 |
value | string | '' | 要在此导航栏项内呈现的自定义 HTML。 |
export default {
themeConfig: {
navbar: {
items: [
{
type: 'html',
position: 'right',
value: '<button>Give feedback</button>',
},
],
},
},
};
自动隐藏粘性导航栏
您可以启用此酷炫的 UI 功能,当用户开始向下滚动页面时自动隐藏导航栏,并在用户向上滚动时再次显示。
export default {
themeConfig: {
navbar: {
hideOnScroll: true,
},
},
};
导航栏样式
您可以设置静态导航栏样式,而不会禁用主题切换功能。无论用户选择了哪个主题,所选样式始终适用。
目前,有两种可能的样式选项:dark
和 primary
(基于 --ifm-color-primary
颜色)。您可以在 Infima 文档 中查看样式预览。
export default {
themeConfig: {
navbar: {
style: 'primary',
},
},
};
代码块
Docusaurus 使用 Prism React Renderer 来突出显示代码块。所有配置都在 prism
对象中。
接受的字段
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
theme | PrismTheme | palenight | 用于浅色主题代码块的 Prism 主题。 |
darkTheme | PrismTheme | palenight | 用于深色主题代码块的 Prism 主题。 |
defaultLanguage | string | undefined | 用于未声明任何显式语言的代码块的默认语言。 |
magicComments | MagicCommentConfig[] | 见下文 | 魔法注释 的列表。 |
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'},
},
];
主题
默认情况下,我们使用 Palenight 作为语法高亮主题。您可以从 可用主题列表 中指定自定义主题。您也可以在站点处于深色模式时使用不同的语法高亮主题。
示例配置
import {themes as prismThemes} from 'prism-react-renderer';
export default {
themeConfig: {
prism: {
theme: prismThemes.github,
darkTheme: prismThemes.dracula,
},
},
};
如果您使用行高亮 Markdown 语法,您可能需要为深色模式语法高亮主题指定不同的高亮背景颜色。请参考 文档以获取指导。
默认语言
如果您在代码块的开头三重反引号后没有添加任何语言,您可以为代码块设置默认语言(例如:```)。请注意,必须传递有效的 语言名称。
示例配置
export default {
themeConfig: {
prism: {
defaultLanguage: 'javascript',
},
},
};
页脚
您可以通过 themeConfig.footer
在页脚中添加徽标和版权信息。徽标可以放置在 静态文件夹 中。徽标 URL 的工作方式与导航栏徽标相同。
接受的字段
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
logo | Logo | undefined | 徽标对象的自定义。有关详细信息,请参阅 导航栏徽标。 |
copyright | string | undefined | 要在底部显示的版权信息,也支持自定义 HTML。 |
style | 'dark' | 'light' | 'light' | 页脚组件的颜色主题。 |
links | (Column | FooterLink)[] | [] | 要显示的链接组。 |
示例配置
export default {
themeConfig: {
footer: {
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()} My Project, Inc. Built with Docusaurus.`,
},
},
};
页脚链接
您可以通过 themeConfig.footer.links
在页脚中添加链接。页脚配置有两种类型:多列页脚和简单页脚。
多列页脚链接具有一个 title
和一个 FooterItem
列表,用于每一列。
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
title | string | undefined | 这些链接部分的标签。 |
items | FooterItem[] | [] | 此部分中的链接。 |
每个 FooterItem
的接受字段
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
label | string | 必需 | 要为此链接显示的文本。 |
to | string | 必需 | 客户端路由,用于在网站内导航。根 URL 将自动添加到此值前面。 |
href | string | 必需 | 完整的页面导航,用于导航到网站外部。**只能使用 to 或 href 中的一个。** |
html | string | undefined | 渲染传递的 HTML,而不是简单的链接。如果使用了 html ,则不应提供其他选项。 |
多列配置示例
export default {
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>
`,
},
],
},
],
},
};
简单页脚只包含一个 FooterItem
列表,以一行显示。
简单配置示例
export default {
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>
`,
},
],
},
};
目录
您可以通过 themeConfig.tableOfContents
调整默认目录。
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
minHeadingLevel | number | 2 | 目录中显示的最小标题级别。必须介于 2 到 6 之间,并且小于或等于最大值。 |
maxHeadingLevel | number | 3 | TOC 中显示的最大标题级别。应为介于 2 到 6 之间的整数。 |
示例配置
export default {
themeConfig: {
tableOfContents: {
minHeadingLevel: 2,
maxHeadingLevel: 5,
},
},
};
Hooks
useColorMode
一个用于访问颜色上下文的 React Hook。此上下文包含用于设置浅色和深色模式的函数,并公开一个布尔变量,指示当前使用哪个模式。
用法示例
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>;
};
调用 useColorMode
的组件必须是 Layout
组件的子组件。
function ExamplePage() {
return (
<Layout>
<Example />
</Layout>
);
}
i18n
首先阅读 i18n 简介。
翻译文件位置
- 基本路径:
website/i18n/[locale]/docusaurus-theme-[themeName]
- 多实例路径:N/A
- JSON 文件:使用
docusaurus write-translations
提取。 - Markdown 文件:N/A
文件系统结构示例
website/i18n/[locale]/docusaurus-theme-classic
│
│ # translations for the theme
├── navbar.json
└── footer.json