跳轉至主要內容
版本:3.5.2

組態

資訊

查看 docusaurus.config.js API 參考手冊 獲取完整選項清單。

Docusaurus 對組態有獨到見解。我們建議你將網站資訊集中在單一位置。我們保護此檔案的欄位,並協助讓這些資料物件在你的網站中都能存取。

妥善維護 docusaurus.config.js 有助於你、你的協作者以及你的開源貢獻者專注於文件編寫,同時也能自訂網站。

宣告 docusaurus.config.js 的語法

docusaurus.config.js 檔案會在 Node.js 中執行,並應該匯出

  • config 物件
  • 函式,用於建立 config 物件
資訊

docusaurus.config.js 檔案支援

約束

  • 必要:請使用 export default /* your config*/(或 module.exports)匯出你的 Docusaurus config
  • 選用:使用 import Lib from 'lib'(或 require('lib'))來匯入 Node.js 套件

Docusaurus 提供我們以各種對等的途徑宣告其組態的能力,而所有下列的組態範例都會導向到完全相同的結果

docusaurus.config.js
export default {
title: 'Docusaurus',
url: 'https://docusaurus.dev.org.tw',
// your site config ...
};
docusaurus.config.js
module.exports = {
title: 'Docusaurus',
url: 'https://docusaurus.dev.org.tw',
// your site config ...
};
docusaurus.config.ts
import type {Config} from '@docusaurus/types';

export default {
title: 'Docusaurus',
url: 'https://docusaurus.dev.org.tw',
// your site config ...
} satisfies Config;
docusaurus.config.js
const config = {
title: 'Docusaurus',
url: 'https://docusaurus.dev.org.tw',
// your site config ...
};

export default config;
docusaurus.config.js
export default function configCreator() {
return {
title: 'Docusaurus',
url: 'https://docusaurus.dev.org.tw',
// your site config ...
};
}
docusaurus.config.js
export default async function createConfigAsync() {
return {
title: 'Docusaurus',
url: 'https://docusaurus.dev.org.tw',
// your site config ...
};
}
使用 ESM-only 套件

使用非同步組態建立器可以匯入 ESM-only 模組(主要是大多數備註外掛程式)很有幫助。因為動態匯入,讓匯入這類模組變得可行

docusaurus.config.js
export default async function createConfigAsync() {
// Use a dynamic import instead of require('esm-lib')
const lib = await import('lib');

return {
title: 'Docusaurus',
url: 'https://docusaurus.dev.org.tw',
// rest of your site config...
};
}

docusaurus.config.js 有什麼內容?

即使您正在開發您的網站,您也不應該從頭開始撰寫您的 docusaurus.config.js。所有範本都附有包含常見選項預設值的 docusaurus.config.js

不過,如果您對組態的設計與實作有高度的瞭解,會很有幫助。

Docusaurus 組態的概觀可以分類為

網站元資料

網站元資料包含必要的整體元資料,例如 標題網址基礎網址網站圖示

它們用於多個地方,例如您網站的標題和標頭、瀏覽器分頁圖示、社群分享(Facebook、Twitter)資訊,甚至用於產生正確的路徑以提供您的靜態檔案。

部署組態

當您使用 deploy 命令部署您的網站時,就會使用到部署組態,例如 專案名稱組織名稱,和 deploy分支(選用)。

建議查看 部署文件 以取得更多資訊。

佈景主題、外掛程式和預設值組態

請在 themespluginspresets 欄位中為你的網站列出 佈景主題外掛程式預設值,這些通常是 npm 套件

docusaurus.config.js
export default {
// ...
plugins: [
'@docusaurus/plugin-content-blog',
'@docusaurus/plugin-content-pages',
],
themes: ['@docusaurus/theme-classic'],
};
提示

Docusaurus 支援 模組簡寫,讓你簡化上述設定為

docusaurus.config.js
export default {
// ...
plugins: ['content-blog', 'content-pages'],
themes: ['classic'],
};

它們也可以從本機目錄載入

docusaurus.config.js
import path from 'path';

export default {
// ...
themes: [path.resolve(__dirname, '/path/to/docusaurus-local-theme')],
};

如需指定外掛程式的選項或佈景主題,請用一個包含外掛程式或佈景主題名稱和選項物件的陣列取代設定檔中的外掛程式或佈景主題名稱

docusaurus.config.js
export default {
// ...
plugins: [
[
'content-blog',
{
path: 'blog',
routeBasePath: 'blog',
include: ['*.md', '*.mdx'],
// ...
},
],
'content-pages',
],
};

如需指定已綑綁在預設值中的外掛程式或佈景主題的選項,請在 presets 欄位中提供選項。在此範例中,docs 指的是 @docusaurus/plugin-content-docs,而 theme 指的是 @docusaurus/theme-classic

docusaurus.config.js
export default {
// ...
presets: [
[
'@docusaurus/preset-classic',
{
docs: {
sidebarPath: './sidebars.js',
},
theme: {
customCss: ['./src/css/custom.css'],
},
},
],
],
};
提示

presets: [['classic', {...}]] 簡寫也可以使用。

如需進一步協助設定佈景主題、外掛程式和預設值,請參閱 使用外掛程式

自訂設定

Docusaurus 會保護 docusaurus.config.js 不受未知欄位的侵擾。如需加入自訂欄位,請在 customFields 中定義。

範例

docusaurus.config.js
export default {
// ...
customFields: {
image: '',
keywords: [],
},
// ...
};

從元件存取設定

你的設定物件會提供給網站的所有元件。你可以透過 React 上下文存取它們,作為 siteConfig

基本範例

import React from 'react';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';

const Hello = () => {
const {siteConfig} = useDocusaurusContext();
const {title, tagline} = siteConfig;

return <div>{`${title} · ${tagline}`}</div>;
};
提示

如果你只想在客戶端使用這些欄位,你可以建立自己的 JS 檔案,再將它們作為 ES6 模組匯入,不需要放到 docusaurus.config.js 中。

自訂 Babel 設定

在新的 Docusaurus 專案中,我們會自動在專案根目錄產生一個 babel.config.js

babel.config.js
export default {
presets: ['@docusaurus/core/lib/babel/preset'],
};

大多時候,這個設定會執行得很好。如果你想自訂你的 Babel 設定(例如加入支援 Flow),你可以直接編輯這個檔案。要讓你的變更生效,你必須重新啟動 Docusaurus 開發伺服器。