跳到主要内容

docusaurus.config.js

docusaurus.config.js

原文链接:

https://docusaurus.nodejs.cn/docs/api/docusaurus-config

提示

信息

有关示例,请参阅入门 配置

概述

docusaurus.config.js 包含你站点的配置,并放置在你站点的根目录中。

信息

注意

使用 TypeScript Docusaurus 代码库,你的配置文件可能被称为 docusaurus.config.ts。语法与 js 配置文件大致相同,但增加了类型。你可以在 Docusaurus 网站 本身上看到一个示例。

该文件在 Node.js 中运行,并应导出站点配置对象或创建它的函数。

docusaurus.config.js 文件支持:

示例:

docusaurus.config.js

export default {
title: 'Docusaurus',
url: 'https://docusaurus.nodejs.cn',
// your site config ...
};

docusaurus.config.js

export default async function createConfigAsync() {
return {
title: 'Docusaurus',
url: 'https://docusaurus.nodejs.cn',
// your site config ...
};
}
信息

提示

请参阅 声明 docusaurus.config.js 的语法 以获取更详尽的示例和解释列表。

必填字段

title

  • 类型:string

你网站的标题。将在元数据中使用并用作浏览器选项卡标题。

docusaurus.config.js

export default {
title: 'Docusaurus',
};

url

  • 类型:string

你网站的 URL。这也可以被视为顶层主机名。例如,https://facebook.github.iohttps://facebook.github.io/metro/ 的 URL,https://docusaurus.nodejs.cnhttps://docusaurus.nodejs.cn 的 URL。该字段与 baseUrl 字段相关。

docusaurus.config.js

export default {
url: 'https://docusaurus.nodejs.cn',
};

baseUrl

  • 类型:string

你网站的基本 URL。可以认为是宿主之后的路径。例如,/metro/https://facebook.github.io/metro/ 的基本 URL。对于没有路径的 URL,baseUrl 应设置为 /。该字段与 url 字段相关。始终有前导斜杠和尾随斜杠。

docusaurus.config.js

export default {
baseUrl: '/',
};

可选字段

favicon

  • 类型:string | undefined

你网站图标的路径;必须是可在链接的 href 中使用的 URL。例如,如果你的网站图标位于 static/img/favicon.ico

docusaurus.config.js

export default {
favicon: '/img/favicon.ico',
};

trailingSlash

  • 类型:boolean | undefined

允许自定义 URL/链接末尾是否存在尾部斜杠,以及如何生成静态 HTML 文件:

  • undefined(默认):保持 URL 不变,并为 /docs/myDoc.md 触发 /docs/myDoc/index.html
  • true:向 URL/链接添加尾部斜杠,并为 /docs/myDoc.md 触发 /docs/myDoc/index.html
  • false:从 URL/链接中删除尾部斜杠,并为 /docs/myDoc.md 触发 /docs/myDoc.html
信息

提示

每个静态托管提供商以不同的方式提供静态文件(这种行为甚至可能随着时间的推移而改变)。

请参阅 部署指南slorber/trailing-slash-guide 选择适当的设置。

i18n

  • 类型:Object

i18n 配置对象为 本地化你的网站

示例:

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:(1) 基本 URL 中没有其名称的语言环境 (2) 以 docusaurus start 开头,没有 --locale 选项 (3) 将用于 <link hrefLang="x-default"> 标记
  • locales:你站点上部署的区域设置列表。必须包含 defaultLocale
  • path:所有语言环境文件夹都相对于的根文件夹。可以是绝对的或相对于配置文件的。默认为 i18n
  • localeConfigs:每个区域设置的单独选项。
    • label:在区域设置下拉列表中为此区域设置显示的标签。
    • directionltr(默认)或 rtl(对于 从右到左的语言,如波斯语、阿拉伯语、希伯来语等)。用于选择区域设置的 CSS 和 HTML 元属性。
    • htmlLang:在 <html lang="...">(或任何其他 DOM 标签名称)和 <link ... hreflang="..."> 中使用的 BCP 47 语言标签
    • calendarcalendar 用于计算日期纪元。请注意,它不控制实际显示的字符串:MM/DD/YYYYDD/MM/YYYY 都是 gregory。要选择格式(DD/MM/YYYYMM/DD/YYYY),请将区域设置名称设置为 en-GBen-USen 表示 en-US)。
    • path:该语言环境的所有插件本地化文件夹都相对于的根文件夹。将针对 i18n.path 解决。默认为区域设置的名称。注意:这对区域设置的 baseUrl 没有影响 - 基本 URL 的自定义正在进行中。

future

  • 类型:Object

future 配置对象允许选择即将推出/不稳定/实验性的 Docusaurus 功能,这些功能尚未准备好迎接黄金时段。

这也是一种选择加入下一个主要版本中即将发生的重大变化的方式,使你能够在保留上一个版本的同时为下一个版本准备你的网站。Remix Future Flags 博客文章 很好地解释了这个想法。

小版本中的重大更改

experimental_unstable_ 为前缀的功能可能会在小版本中发生变化,不被视为 语义版本控制重大更改

v<MajorVersion>_v6_ v7_ 等)为前缀的功能是未来标志,预计在下一个主要版本中默认启用。这些不太可能发生变化,但我们保留这样做的可能性。

future API 重大更改应该很容易处理,并将在小版本/大版本博客文章中记录。

示例:

docusaurus.config.js

export default {
future: {
experimental_storage: {
type: 'localStorage',
namespace: true,
},
experimental_router: 'hash',
},
};
  • experimental_storage:主题作者应努力尊重的站点范围浏览器存储选项。
    • type:作者应使用的浏览器存储主题。可能的值是 localStoragesessionStorage。默认为 localStorage
    • namespace:是否对浏览器存储密钥进行命名空间,以避免当 Docusaurus 站点托管在同一域下或本地主机上时发生存储密钥冲突。可能的值是 string | boolean。命名空间附加在存储键 key-namespace 的末尾。使用 true 自动从你的站点 url + baseUrl 生成随机命名空间。默认为 false(无命名空间,历史行为)。
  • experimental_router:要使用的路由类型。可能的值是 browserhash。默认为 browserhash 路由仅在极少数情况下有用,在这些情况下,你想要退出静态站点生成,拥有一个带有单个 index.html 入口点文件的完全客户端应用。这对于将 Docusaurus 站点分发为你可以 无需运行 Web 服务器即可在本地浏览.zip 存档很有用。

noIndex

  • 类型:boolean

此选项将 <meta name="robots" content="noindex, nofollow"> 添加到每个页面,以告诉搜索引擎避免对你的网站建立索引(更多信息 此处)。

示例:

docusaurus.config.js

export default {
noIndex: true, // Defaults to `false`
};
  • 类型:'ignore' | 'log' | 'warn' | 'throw'

Docusaurus 检测到任何损坏的链接时的行为。

默认情况下,它会抛出错误,以确保你永远不会发送任何损坏的链接。

注意

损坏的链接检测仅适用于生产版本 (docusaurus build)。

onBrokenAnchors

  • 类型:'ignore' | 'log' | 'warn' | 'throw'

Docusaurus 检测到任何使用 Docusaurus 的 Heading 组件声明的损坏锚点时的行为。

默认情况下,它会打印一条警告,让你了解损坏的锚点。

  • 类型:'ignore' | 'log' | 'warn' | 'throw'

Docusaurus 检测到任何损坏的 Markdown 链接时的行为。

默认情况下,它会打印一条警告,让你知道损坏的 Markdown 链接。

onDuplicateRoutes

  • 类型:'ignore' | 'log' | 'warn' | 'throw'

Docusaurus 检测到任何 重复路由 时的行为。

默认情况下,运行 yarn startyarn build 后会显示警告。

tagline

  • 类型:string

你网站的标语。

docusaurus.config.js

export default {
tagline:
'Docusaurus makes it easy to maintain Open Source documentation websites.',
};

organizationName

  • 类型:string

拥有存储库的 GitHub 用户或组织。如果你不使用 docusaurus deploy 命令,则不需要此命令。

docusaurus.config.js

export default {
// Docusaurus' organization is facebook
organizationName: 'facebook',
};

projectName

  • 类型:string

GitHub 存储库的名称。如果你不使用 docusaurus deploy 命令,则不需要此命令。

docusaurus.config.js

export default {
projectName: 'docusaurus',
};

deploymentBranch

  • 类型:string

将静态文件部署到的分支的名称。如果你不使用 docusaurus deploy 命令,则不需要此命令。

docusaurus.config.js

export default {
deploymentBranch: 'gh-pages',
};

githubHost

  • 类型:string

你的服务器的主机名。如果你使用 GitHub Enterprise,则很有用。如果你不使用 docusaurus deploy 命令,则不需要此命令。

docusaurus.config.js

export default {
githubHost: 'github.com',
};

githubPort

  • 类型:string

你的服务器的端口。如果你使用 GitHub Enterprise,则很有用。如果你不使用 docusaurus deploy 命令,则不需要此命令。

docusaurus.config.js

export default {
githubPort: '22',
};

themeConfig

  • 类型:Object

主题配置 对象用于自定义站点 UI,如导航栏和页脚。

示例:

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

  • 类型:PluginConfig[]
type PluginConfig = string | [string, any] | PluginModule | [PluginModule, any];

参见 插件方法参考 了解 PluginModule 的形状。

docusaurus.config.js

export default {
plugins: [
'docusaurus-plugin-awesome',
['docusuarus-plugin-confetti', {fancy: false}],
() => ({
postBuild() {
console.log('Build finished');
},
}),
],
};

themes

  • 类型:PluginConfig[]

docusaurus.config.js

export default {
themes: ['@docusaurus/theme-classic'],
};

presets

  • 类型:PresetConfig[]
type PresetConfig = string | [string, any];

docusaurus.config.js

export default {
presets: [],
};

markdown

全局 Docusaurus Markdown 配置。

  • 类型:MarkdownConfig
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;
};

示例:

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,
},
},
};
名称类型默认描述
format`'mdx''md''detect'`
mermaidbooleanfalsetrue 时,允许 Docusaurus 将 mermaid 语言的 Markdown 代码块渲染为 Mermaid 图表。
preprocessorMarkdownPreprocessorundefined使你能够在解析之前更改 Markdown 内容字符串。将其用作最后的应急方案或解决方法:实现 Remark/Rehype 插件几乎总是更好。
parseFrontMatterParseFrontMatterundefined使你能够提供自己的前端解析器,或增强默认解析器。请阅读我们的 前题指南 了解详细信息。
mdx1CompatMDX1CompatOptions{comments: true, admonitions: true, headingIds: true}兼容性选项可让你更轻松地升级到 Docusaurus v3+。
anchorsMarkdownAnchorsConfig{maintainCase: false}用于控制从 Markdown 标题生成的锚点行为的选项
remarkRehypeOptionsobjectundefined使得可以通过自定义 remark-rehype 选项

customFields

Docusaurus 守护着来自未知字段的 docusaurus.config.js。要添加自定义字段,请在 customFields 上定义它。

  • 类型:Object

docusaurus.config.js

export default {
customFields: {
admin: 'endi',
superman: 'lol',
},
};

尝试在配置中添加未知字段将导致构建期间出现错误:

Error: The field(s) 'foo', 'bar' are not recognized in docusaurus.config.js

staticDirectories

路径数组,相对于站点目录或绝对路径。这些路径下的文件将按原样复制到构建输出。

  • 类型:string[]

示例:

docusaurus.config.js

export default {
staticDirectories: ['static'],
};

headTags

将插入 HTML <head> 中的标签数组。这些值必须是包含两个属性的对象;tagNameattributestagName 必须是一个字符串,用于确定正在创建的标签;例如 "link"attributes 必须是属性值映射。

  • 类型:{ tagName: string; attributes: Object; }[]

示例:

docusaurus.config.js

export default {
headTags: [
{
tagName: 'link',
attributes: {
rel: 'icon',
href: '/img/docusaurus.png',
},
},
],
};

这将在生成的 HTML 中变成 <link rel="icon" href="img/docusaurus.png" />

scripts

要加载的脚本数组。这些值可以是字符串或属性值映射的普通对象。<script> 标签将插入 HTML <head> 中。如果你使用普通对象,则唯一必需的属性是 src,并且允许任何其他属性(每个属性都应该具有布尔/字符串值)。

请注意,此处添加的 <script> 是渲染阻塞的,因此你可能需要将 async: true/defer: true 添加到对象中。

  • 类型:(string | Object)[]

示例:

docusaurus.config.js

export default {
scripts: [
// String format.
'https://docusaurus.nodejs.cn/script.js',
// Object format.
{
src: 'https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js',
async: true,
},
],
};

stylesheets

要加载的 CSS 源数组。这些值可以是字符串或属性值映射的普通对象。<link> 标签将插入 HTML <head> 中。如果你使用对象,则唯一必需的属性是 href,并且允许任何其他属性(每个属性都应该具有布尔/字符串值)。

  • 类型:(string | Object)[]

示例:

docusaurus.config.js

export default {
stylesheets: [
// String format.
'https://docusaurus.nodejs.cn/style.css',
// Object format.
{
href: 'http://mydomain.com/style.css',
},
],
};

信息

默认情况下,<link> 标签将具有 rel="stylesheet",但你可以显式添加自定义 rel 值来注入任何类型的 <link> 标签,不一定是样式表。

clientModules

要在你的网站上全局加载的 客户端模块 数组。

示例:

docusaurus.config.js

export default {
clientModules: ['./mySiteGlobalJs.js', './mySiteGlobalCss.css'],
};

ssrTemplate

Eta 的语法 编写的 HTML 模板,将用于渲染你的应用。这可用于在 body 标签、附加 meta 标签、自定义 viewport 等上设置自定义属性。请注意,Docusaurus 将依赖模板正确构建才能正常运行,一旦你对其进行自定义,你将 必须确保你的模板符合上游的要求。

  • 类型:string

示例:

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

  • 类型:string

将用作生成的 <title> 标记中的标题分隔符。

示例:

docusaurus.config.js

export default {
titleDelimiter: '🦖', // Defaults to `|`
};

baseUrlIssueBanner

  • 类型:boolean

启用后,将显示一个横幅,以防你的网站无法加载其 CSS 或 JavaScript 文件,这是一个非常常见的问题,通常与网站配置中的错误 baseUrl 有关。

示例:

docusaurus.config.js

export default {
baseUrlIssueBanner: true, // Defaults to `true`
};

A sample base URL issue banner. The style is very raw since the stylesheets failed to load. The text says "Your Docusaurus site did not load properly... Current configured baseUrl = / (default value); We suggest trying baseUrl = /build/

警告

此横幅需要内联 CSS / JS,以防所有资源加载由于错误的基本 URL 而失败。

如果你有严格的 内容安全政策,你应该禁用它。