docusaurus.config.js
请参阅入门配置以获取示例。
概述
docusaurus.config.js
包含您网站的配置,并放置在您网站的根目录中。
对于使用TypeScript 的 Docusaurus 代码库,您的配置文件可能称为 docusaurus.config.ts
。语法与 js
配置文件大体相同,但增加了类型。您可以在Docusaurus 网站本身查看示例。
此文件在 Node.js 中运行,并且应导出一个站点配置对象,或创建一个站点的函数。
docusaurus.config.js
文件支持
示例
export default {
title: 'Docusaurus',
url: 'https://docusaurus.org.cn',
// your site config ...
};
export default async function createConfigAsync() {
return {
title: 'Docusaurus',
url: 'https://docusaurus.org.cn',
// your site config ...
};
}
请参阅声明 docusaurus.config.js
的语法以获取更详尽的示例和说明。
必填字段
title
- 类型:
string
您网站的标题。将用于元数据和浏览器标签标题。
export default {
title: 'Docusaurus',
};
url
- 类型:
string
您网站的 URL。这也可以被认为是顶级主机名。例如,https://facebook.github.io
是https://facebook.github.io/metro/ 的 URL,而 https://docusaurus.org.cn
是https://docusaurus.org.cn 的 URL。此字段与baseUrl
字段相关。
export default {
url: 'https://docusaurus.org.cn',
};
baseUrl
- 类型:
string
您网站的基本 URL。可以将其视为主机名之后的路径。例如,/metro/
是https://facebook.github.io/metro/ 的基本 URL。对于没有路径的 URL,应将 baseUrl 设置为 /
。此字段与url
字段相关。始终具有前导和尾随斜杠。
export default {
baseUrl: '/',
};
可选字段
favicon
- 类型:
string | undefined
您网站收藏夹图标的路径;必须是可以在链接的 href 中使用的 URL。例如,如果您的收藏夹图标位于 static/img/favicon.ico
中
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 配置对象。
示例
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
:在区域设置下拉列表中显示的此区域设置的标签。direction
:ltr
(默认值)或rtl
(对于从右到左的语言,如波斯语、阿拉伯语、希伯来语等)。用于选择区域设置的 CSS 和 HTML 元属性。htmlLang
:在<html lang="...">
(或任何其他 DOM 标签名称)和<link ... hreflang="...">
中使用的 BCP 47 语言标签calendar
:用于计算日期纪元的日历。请注意,它不控制实际显示的字符串:MM/DD/YYYY
和DD/MM/YYYY
均为gregory
。要选择格式(DD/MM/YYYY
或MM/DD/YYYY
),请将您的区域设置名称设置为en-GB
或en-US
(en
表示en-US
)。path
:此区域设置的所有插件本地化文件夹相对于其的根文件夹。将相对于i18n.path
解析。默认为区域设置的名称。注意:这不会影响区域设置的baseUrl
——基本 URL 的自定义正在开发中。
future
- 类型:
Object
future
配置对象允许选择加入即将推出/不稳定/实验性的 Docusaurus 功能,这些功能尚未准备好投入使用。
它也是一种选择加入即将在下一个主要版本中发生的重大更改的方法,使您能够在保留先前版本的同时为下一个版本准备您的网站。Remix 未来标志博客文章 很好地解释了这个想法。
以 experimental_
或 unstable_
为前缀的功能可能会在**次要版本**中发生更改,并且不被视为语义版本控制重大更改。
以 v<MajorVersion>_
(v6_
v7_
等)为前缀的功能是未来标志,预计将在下一个主要版本中默认启用。这些不太可能发生变化,但我们保留这样做的可能性。
future
API 的重大更改应该易于处理,并且将在次要/主要版本博客文章中记录。
示例
export default {
future: {
experimental_storage: {
type: 'localStorage',
namespace: true,
},
experimental_router: 'hash',
},
};
experimental_storage
:主题作者应努力遵守的网站范围的浏览器存储选项。type
:主题作者应使用的浏览器存储。可能的值为localStorage
和sessionStorage
。默认为localStorage
。namespace
:是否为浏览器存储键命名空间,以避免在 Docusaurus 网站托管在同一域名下或在本地主机上时发生存储键冲突。可能的值为string | boolean
。命名空间附加在存储键key-namespace
的末尾。使用true
从您的网站url + baseUrl
自动生成随机命名空间。默认为false
(没有命名空间,历史行为)。
experimental_router
:要使用的路由器类型。可能的值为browser
和hash
。默认为browser
。hash
路由器仅在您希望选择退出静态站点生成、拥有具有单个index.html
入口点文件的完全客户端应用程序的罕见情况下有用。这对于将 Docusaurus 网站作为.zip
档案分发可能很有用,您可以在本地浏览而无需运行 Web 服务器。
noIndex
- 类型:
boolean
此选项将 <meta name="robots" content="noindex, nofollow">
添加到每个页面,以告诉搜索引擎避免索引您的网站(更多信息在此处)。
示例
export default {
noIndex: true, // Defaults to `false`
};
onBrokenLinks
- 类型:
'ignore' | 'log' | 'warn' | 'throw'
Docusaurus 检测到任何断链时的行为。
默认情况下,它会抛出一个错误,以确保您永远不会发布任何断链。
断链检测仅适用于生产构建(docusaurus build
)。
onBrokenAnchors
- 类型:
'ignore' | 'log' | 'warn' | 'throw'
Docusaurus 检测到使用 Docusaurus 的 Heading
组件声明的任何断锚时的行为。
默认情况下,它会打印一条警告,让您知道您的断锚。
onBrokenMarkdownLinks
- 类型:
'ignore' | 'log' | 'warn' | 'throw'
Docusaurus 检测到任何 Markdown 链接损坏时的行为。
默认情况下,它会打印警告,让你知道你的 Markdown 链接已损坏。
onDuplicateRoutes
- 类型:
'ignore' | 'log' | 'warn' | 'throw'
Docusaurus 检测到任何重复路由时的行为。
默认情况下,在运行 yarn start
或 yarn build
后会显示警告。
tagline
- 类型:
string
你网站的标语。
export default {
tagline:
'Docusaurus makes it easy to maintain Open Source documentation websites.',
};
organizationName
- 类型:
string
拥有该存储库的 GitHub 用户或组织。如果你没有使用 docusaurus deploy
命令,则不需要此项。
export default {
// Docusaurus' organization is facebook
organizationName: 'facebook',
};
projectName
- 类型:
string
GitHub 存储库的名称。如果你没有使用 docusaurus deploy
命令,则不需要此项。
export default {
projectName: 'docusaurus',
};
deploymentBranch
- 类型:
string
要将静态文件部署到的分支名称。如果你没有使用 docusaurus deploy
命令,则不需要此项。
export default {
deploymentBranch: 'gh-pages',
};
githubHost
- 类型:
string
服务器的主机名。如果你使用的是 GitHub Enterprise,则很有用。如果你没有使用 docusaurus deploy
命令,则不需要此项。
export default {
githubHost: 'github.com',
};
githubPort
- 类型:
string
服务器的端口。如果你使用的是 GitHub Enterprise,则很有用。如果你没有使用 docusaurus deploy
命令,则不需要此项。
export default {
githubPort: '22',
};
themeConfig
- 类型:
Object
用于自定义网站 UI(如导航栏和页脚)的主题配置对象。
示例
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
的形状,请参阅插件方法参考。
export default {
plugins: [
'docusaurus-plugin-awesome',
['docusuarus-plugin-confetti', {fancy: false}],
() => ({
postBuild() {
console.log('Build finished');
},
}),
],
};
themes
- 类型:
PluginConfig[]
export default {
themes: ['@docusaurus/theme-classic'],
};
presets
- 类型:
PresetConfig[]
type PresetConfig = string | [string, any];
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;
};
示例
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' | 'mdx' | 用于 Markdown 内容的默认解析器格式。使用“detect”将根据文件扩展名自动选择合适的格式:.md 与 .mdx 。 |
mermaid | 布尔值 | false | 当 true 时,允许 Docusaurus 将带有 mermaid 语言的 Markdown 代码块渲染为 Mermaid 图表。 |
preprocessor | MarkdownPreprocessor | undefined | 使你能够在解析之前更改 Markdown 内容字符串。将其用作最后的手段或解决方法:几乎总是更好地实现 Remark/Rehype 插件。 |
parseFrontMatter | ParseFrontMatter | undefined | 使你能够提供自己的前置 matter 解析器,或增强默认解析器。阅读我们的前置 matter 指南以了解更多详细信息。 |
mdx1Compat | MDX1CompatOptions | {comments: true, admonitions: true, headingIds: true} | 兼容性选项,使升级到 Docusaurus v3+ 更容易。 |
anchors | MarkdownAnchorsConfig | {maintainCase: false} | 控制从 Markdown 标题生成的锚点的行为的选项 |
remarkRehypeOptions | 对象 | undefined | 可以传递自定义remark-rehype 选项。 |
customFields
Docusaurus 会保护 docusaurus.config.js
免受未知字段的影响。要添加自定义字段,请在 customFields
上定义它。
- 类型:
Object
export default {
customFields: {
admin: 'endi',
superman: 'lol',
},
};
尝试在配置中添加未知字段会导致构建时出错
Error: The field(s) 'foo', 'bar' are not recognized in docusaurus.config.js
staticDirectories
相对于站点目录或绝对路径的路径数组。这些路径下的文件将按原样复制到构建输出中。
- 类型:
string[]
示例
export default {
staticDirectories: ['static'],
};
headTags
将在 HTML <head>
中插入的标签数组。这些值必须是包含两个属性的对象;tagName
和 attributes
。tagName
必须是一个确定要创建的标签的字符串;例如 "link"
。attributes
必须是一个属性-值映射。
- 类型:
{ tagName: string; attributes: Object; }[]
示例
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)[]
示例
export default {
scripts: [
// String format.
'https://docusaurus.org.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)[]
示例
export default {
stylesheets: [
// String format.
'https://docusaurus.org.cn/style.css',
// Object format.
{
href: 'http://mydomain.com/style.css',
},
],
};
默认情况下,<link>
标签将具有 rel="stylesheet"
,但你可以显式添加自定义 rel
值以注入任何类型的 <link>
标签,而不一定是样式表。
clientModules
要全局加载到站点上的客户端模块数组。
示例
export default {
clientModules: ['./mySiteGlobalJs.js', './mySiteGlobalCss.css'],
};
ssrTemplate
用Eta 的语法编写的 HTML 模板,将用于渲染你的应用程序。这可以用来设置 body
标签上的自定义属性、其他 meta
标签、自定义 viewport
等。请注意,Docusaurus 将依赖于模板的正确结构才能正常工作,一旦你自定义了它,你就必须确保你的模板符合上游的要求。
- 类型:
string
示例
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>
标签中用作标题分隔符。
示例
export default {
titleDelimiter: '🦖', // Defaults to `|`
};
baseUrlIssueBanner
- 类型:
boolean
启用后,如果你的站点无法加载其 CSS 或 JavaScript 文件,则会显示横幅,这是一个非常常见的问题,通常与站点配置中的错误 baseUrl
相关。
示例
export default {
baseUrlIssueBanner: true, // Defaults to `true`
};
如果所有资源加载都因错误的基本 URL 而失败,则此横幅需要内联 CSS/JS。
如果你有严格的内容安全策略,则应将其禁用。