Docusaurusの使い方
はじめに
マークダウンファイルを静的サイトとして生成できたり、mermaidjs、redoc、Swagger, openapi.jsonなどのサイトも取り込める便利なツールを見つけたので記述する
Docusaurusは静的サイトジェネレーターで、主に技術文書やドキュメントサイトの構築に使用されます。このガイドでは、TypeScriptを使用してDocusaurusをインストールし、設定ファイル(docusaurus.config.ts
とsidebars.ts
)の書き方を解説します。
目次
- フォルダ構成
- Docusaurusのインストール
- 初期設定
-
docusaurus.config.ts
の書き方 -
sidebars.ts
の書き方 - OpenAPIドキュメントの生成
- まとめ
完成形イメージ
1. フォルダ構成
Docusaurusプロジェクトの基本的なフォルダ構成は以下のようになります。
my-website/
├── blog/
├── docs/
│ ├── getting-started/
│ ├── architecture-design/
│ └── api/
├── src/
│ └── css/
│ └── custom.css
├── static/
│ └── img/
│ └── favicon.ico
├── docusaurus.config.ts
└── sidebars.ts
-
blog/
: ブログ記事を格納するディレクトリ -
docs/
: ドキュメントを格納するディレクトリ -
src/
: カスタムCSSやコンポーネントを格納するディレクトリ -
static/
: 静的ファイル(画像など)を格納するディレクトリ -
docusaurus.config.ts
: Docusaurusのメイン設定ファイル -
sidebars.ts
: サイドバーの設定ファイル
2. Docusaurusのインストール
Docusaurusをプロジェクトにインストールするためには、Node.jsとnpmが必要です。以下のコマンドを実行してインストールします。
npx create-docusaurus@latest my-website classic --typescript
cd my-website
npm install
3. 初期設定
プロジェクトを初期化した後、my-website
ディレクトリに移動します。ここで、主要な設定ファイルであるdocusaurus.config.ts
とsidebars.ts
を編集していきます。
docusaurus.config.ts
の書き方
4. 設定項目の概要
以下の表は、docusaurus.config.ts
で使用される主要な設定項目とその説明です。
設定項目 | 説明 |
---|---|
title |
サイトのタイトル |
tagline |
サイトのキャッチフレーズ |
favicon |
サイトのファビコンのパス |
url |
サイトのURL |
baseUrl |
サイトのベースURL |
onBrokenLinks |
壊れたリンクが見つかったときの動作 |
onBrokenMarkdownLinks |
壊れたMarkdownリンクが見つかったときの動作 |
i18n |
多言語対応の設定 |
presets |
使用するプリセットとその設定 |
themeConfig |
テーマの設定 |
docusaurus.config.ts
の例
以下に、具体的なdocusaurus.config.ts
の例を示します。この例では、Docusaurusの基本設定とRedocの埋め込みを行っています。
import { themes as prismThemes } from 'prism-react-renderer';
import type { Config } from '@docusaurus/types';
import type * as Preset from '@docusaurus/preset-classic';
const config: Config = {
title: 'My Site',
tagline: 'Dinosaurs are cool',
favicon: 'img/favicon.ico',
url: 'https://your-docusaurus-site.example.com',
baseUrl: '/',
onBrokenLinks: 'throw',
onBrokenMarkdownLinks: 'warn',
i18n: {
defaultLocale: 'en',
locales: ['en'],
},
presets: [
[
'classic',
{
docs: {
sidebarPath: require.resolve('./sidebars.ts'),
},
blog: {
showReadingTime: true,
},
theme: {
customCss: require.resolve('./src/css/custom.css'),
},
} satisfies Preset.Options,
],
['redocusaurus',
{
specs: [
{
id: 'sample_file',
spec: './openapi.json',
route: '/api-docs',
},
],
theme: {
primaryColor: '#1890ff',
},
},
],
],
themeConfig: {
image: 'img/docusaurus-social-card.jpg',
navbar: {
title: 'My Site',
logo: {
alt: 'My Site Logo',
src: 'img/logo.svg',
},
items: [
{
type: 'docSidebar',
sidebarId: 'gettingStartedSidebar',
position: 'left',
label: 'Getting Started',
},
{
type: 'docSidebar',
sidebarId: 'architectureDesignSidebar',
position: 'left',
label: 'Architecture Design',
},
{
to: '/api-docs',
label: 'API Docs',
position: 'left',
},
],
},
footer: {
style: 'dark',
links: [
{
title: 'Docs',
items: [
{
label: 'Getting Started',
to: '/docs/getting-started/intro',
},
{
label: 'Architecture Design',
to: '/docs/architecture-design/intro',
},
],
},
],
copyright: `Copyright © ${new Date().getFullYear()} My Project, Inc. Built with Docusaurus.`,
},
prism: {
theme: prismThemes.github,
darkTheme: prismThemes.dracula,
},
} satisfies Preset.ThemeConfig,
};
export default config;
sidebars.ts
の書き方
5. 設定項目の概要
以下の表は、sidebars.ts
で使用される主要な設定項目とその説明です。
設定項目 | 説明 |
---|---|
gettingStartedSidebar |
自動生成されたサイドバーの設定 |
architectureDesignSidebar |
自動生成されたサイドバーの設定 |
apiSidebar |
自動生成されたサイドバーの設定 |
sidebars.ts
の例
以下に、具体的なsidebars.ts
の例を示します。この例では、自動生成されたサイドバーを設定しています。
import type { SidebarsConfig } from '@docusaurus/plugin-content-docs';
const sidebars: SidebarsConfig = {
gettingStartedSidebar: [{ type: 'autogenerated', dirName: 'getting-started' }],
architectureDesignSidebar: [{ type: 'autogenerated', dirName: 'architecture-design' }],
apiSidebar: [{ type: 'autogenerated', dirName: 'api' }],
};
export default sidebars;
6. OpenAPIドキュメントの生成
Docusaurusは、Redocusaurusプラグインを使用してOpenAPI仕様からAPIドキュメントを生成することができます。以下に、設定方法を示します。
docusaurus.config.ts
での設定
Redocusaurusプラグインを使用するために、docusaurus.config.ts
に以下の設定を追加します。
presets: [
[
'classic',
{
docs: {
sidebarPath: require.resolve('./sidebars.ts'),
},
blog: {
showReadingTime: true,
},
theme: {
customCss: require.resolve('./src/css/custom.css'),
},
} satisfies Preset.Options,
],
['redocusaurus',
{
specs: [
{
id: 'sample_file',
spec: './openapi.json',
route: '/api-docs',
},
],
theme: {
primaryColor: '#1890ff',
},
},
],
],
この設定により、openapi.json
ファイルを使用して/api-docs
ルートにAPIドキュメントを生成します。
openapi.json
の配置
openapi.json
ファイルをプロジェクトのルートディレクトリに配置します。このファイルには、OpenAPI仕様に従ったAPI定義が含まれています。
7. まとめ
このガイドでは、Docusaurusのインストールから初期設定、主要な設定ファイルの書き方、そしてOpenAPIドキュメントの生成までを解説しました。Docusaurusを使用することで、効率的にドキュメントサイトを構築することができます。設定ファイルの書き方に慣れることで、カスタマイズも簡単に行えるようになります。
Discussion