Docusaurus v3へのアップグレード
このドキュメントは、Docusaurus v2からDocusaurus v3へサイトをアップグレードするのに役立ちます。
Docusaurus v3は、サイトの調整が必要となる破壊的な変更を含む、新しいメジャーバージョンです。このプロセスをガイドし、いくつかのオプションの推奨事項についても説明します。
これは完全な書き換えではなく、破壊的な変更は比較的簡単に処理できます。最もシンプルなサイトは、最終的にnpmの依存関係を更新するだけでアップグレードできます。
主な破壊的な変更は、MDX v1からMDX v3へのアップグレードです。詳細については、MDX v2とMDX v3のリリースノートを参照してください。MDXは、Markdownコンテンツをより厳密に、そして微妙な違いでコンパイルするようになります。
アップグレードする前に、Docusaurus v3に向けてサイトを準備することをお勧めします。Docusaurus v2で段階的に処理できる変更があります。そうすることで、Docusaurus v3への最終的なアップグレードに必要な作業を減らすことができます。
複雑なサイトの場合は、ビジュアルリグレッションテストを設定することもお勧めします。これは、サイトの見た目が変わらないようにするための良い方法です。Docusaurus v3は主に依存関係をアップグレードするものであり、視覚的な変更が発生するとは予想されません。
Docusaurus v3.0.0のリリースノートを確認し、ここで言及されている各変更の背後にある追加の有用な情報と動機についてプルリクエストを参照してください。
依存関係のアップグレード
Docusaurus v3にアップグレードするには、コアDocusaurusの依存関係(@docusaurus/name
)だけでなく、その他の関連パッケージもアップグレードする必要があります。
Docusaurus v3は、次の依存関係を使用するようになりました
- Node.js v18.0+
- React v18.0+
- MDX v3.0+
- TypeScript v5.1+
- prism-react-renderer v2.0+
- react-live v4.0+
- remark-emoji v4.0+
- mermaid v10.4+
サイトでサードパーティのコミュニティプラグインとテーマを使用している場合は、それらをアップグレードする必要がある場合があります。
アップグレードを試みる前に、これらのプラグインがDocusaurus v3と互換性があることを確認してください。
一般的なpackage.json
の依存関係アップグレードの例
{
"dependencies": {
// upgrade to Docusaurus v3
- "@docusaurus/core": "2.4.3",
- "@docusaurus/preset-classic": "2.4.3",
+ "@docusaurus/core": "3.0.0",
+ "@docusaurus/preset-classic": "3.0.0",
// upgrade to MDX v3
- "@mdx-js/react": "^1.6.22",
+ "@mdx-js/react": "^3.0.0",
// upgrade to prism-react-renderer v2.0+
- "prism-react-renderer": "^1.3.5",
+ "prism-react-renderer": "^2.1.0",
// upgrade to React v18.0+
- "react": "^17.0.2",
- "react-dom": "^17.0.2"
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
},
"devDependencies": {
// upgrade Docusaurus dev dependencies to v3
- "@docusaurus/module-type-aliases": "2.4.3",
- "@docusaurus/types": "2.4.3"
+ "@docusaurus/module-type-aliases": "3.0.0",
+ "@docusaurus/types": "3.0.0"
}
"engines": {
// require Node.js 18.0+
- "node": ">=16.14"
+ "node": ">=18.0"
}
}
TypeScriptユーザーの場合
{
"devDependencies": {
// swap the external TypeScript config package for the new official one
- "@tsconfig/docusaurus": "^1.0.7",
+ "@docusaurus/tsconfig": "3.0.0",
// upgrade React types to v18.0+
- "@types/react": "^17.0.69",
+ "@types/react": "^18.2.29",
// upgrade TypeScript to v5.1+
- "typescript": "~4.7.4"
+ "typescript": "~5.2.2"
}
}
MDXのアップグレード
MDXは、.md
および.mdx
ファイルをReactコンポーネントにコンパイルするDocusaurusの主要な依存関係です。
MDX v1からMDX v3への移行は、Docusaurus v3の採用における主な課題です。ほとんどの破壊的な変更はMDX v2からのものであり、MDX v3は比較的小さなリリースです。
Docusaurus v2で正常にコンパイルされたドキュメントの一部は、Docusaurus v3ではコンパイルに失敗する可能性があります。
サイトでnpx docusaurus-mdx-checker
を実行して、Docusaurus v3でコンパイルに失敗するファイルのリストを取得します。
このコマンドは、コンテンツを互換性のある状態にするために必要な作業量を推定するのにも適しています。この作業のほとんどは、Docusaurus v3に向けてコンテンツを準備することで、アップグレードの前に実行できることを覚えておいてください。
他のドキュメントも異なるレンダリングになる可能性があります。
すべてのページの目視確認が難しい大規模なサイトの場合は、ビジュアルリグレッションテストを設定することをお勧めします。
MDXのアップグレードには、MDX v2とMDX v3のリリースブログ記事に記載されているすべての破壊的な変更が伴います。ほとんどの破壊的な変更はMDX v2からのものであり、MDX v3は比較的小さなリリースです。MDX v2の移行ガイドには、MDXファイルを更新する方法に関するセクションがあり、これは特に私たちに関連します。また、一般的なMDXエラーメッセージの解釈に役立つMDXのトラブルシューティングページも必ずお読みください。
更新されたMDXとReactのドキュメントページも必ずお読みください。
MDXプレイグラウンドの使用
MDXプレイグラウンドは、あなたの新しい親友です。これにより、コンテンツがReactコンポーネントにコンパイルされる方法を理解し、コンパイルまたはレンダリングの問題を個別にトラブルシューティングできます。
DocusaurusのMDXプレイグラウンドオプションの設定
Docusaurus v2で使用されているものと同様のコンパイル動作を得るには、MDXプレイグラウンドで次のオプションをオンにしてください。
MDX
を使用するremark-gfm
を使用するremark-directive
を使用する
2つのMDXプレイグラウンドを並べて使用すると、コンテンツの一部がv2でコンパイル方法が異なるか、コンパイルに失敗することにすぐに気づくでしょう。
目標は、問題のあるコンテンツをリファクタリングして、MDXの両方のバージョンで正常に動作するようにすることです。このようにすることで、Docusaurus v3にアップグレードするときに、このコンテンツはすぐに使用できるようになります。
MDXチェッカーCLIの使用
問題のあるコンテンツを簡単に見つけることができるdocusaurus-mdx-checker CLIを提供しています。サイトでこのコマンドを実行して、MDX v3でコンパイルに失敗するファイルのリストを取得します。
npx docusaurus-mdx-checker
コンパイルの問題ごとに、CLIはファイルのパスと調べる行番号をログに記録します。
このCLIを使用して、コンテンツをMDX v3と互換性を持たせるために必要な作業量を推定します。
このCLIはベストエフォートであり、コンパイルエラーのみを報告します。
エラーは発生しないものの、コンテンツの表示に影響を与える可能性のある微妙なコンパイルの変更は報告しません。これらの問題をキャッチするには、ビジュアルリグレッションテストの使用をお勧めします。
一般的なMDXの問題
Docusaurusは、MDXに伴うすべての変更を網羅的に文書化することはできません。それはMDX v2とMDX v3の移行ガイドの責任です。
しかし、いくつかのDocusaurusサイトをアップグレードすることで、ほとんどの問題は、ドキュメント化したいくつかのケースに帰着することがわかりました。
{
の誤った使用
{
文字は、JavaScript式を開くために使用されます。{expression}
の中に有効な式ではないものを記述すると、MDXは失敗します。
The object shape looks like {username: string, age: number}
acornで式を解析できませんでした: 式の後に予期しないコンテンツがあります
このエラーを修正するための利用可能なオプション
- インラインコードを使用する:
{username: string, age: number}
- HTMLコードを使用する:
{
- エスケープする:
\{
<
の誤った使用
<
文字は、JSXタグを開くために使用されます。JSXが無効だと判断された場合、MDXは失敗します。
Use Android version <5
You can use a generic type like Array<T>
Follow the template "Road to <YOUR_MINOR_VERSION>"
名前の前に予期しない文字
5
(U+0035) があります。文字、$
、または_
などの名前を開始できる文字が必要です。
<T>
(1:6-1:9) の終了タグは、paragraph
の終了タグの不一致mdast-util-mdx-jsxの前に必要です。
<YOUR_MINOR_VERSION>
(134:19-134:39) の終了タグは、paragraph
の前に必要です。
このエラーを修正するための利用可能なオプション
- インラインコードを使用する:
Array<T>
- HTMLコードを使用する:
<
または<
- エスケープする:
\<
GFM自動リンクの誤った使用
DocusaurusはGitHub Flavored Markdown (GFM)をサポートしていますが、<link>
構文を使用した自動リンクはMDXではサポートされなくなりました。
<[email protected]>
<http://localhost:3000>
名前の予期しない文字
@
(U+0040)。文字、数字、$
、または_
などの名前文字が必要です。属性の前の空白。またはタグの終了(注: MDXでリンクを作成するには、[text](url)
を使用します)
ローカル名の前に予期しない文字
/
(U+002F)。文字、$
、または_
などの名前を開始できる文字が必要です。(注: MDXでリンクを作成するには、[text](url)
を使用します)
通常のMarkdownリンクを使用するか、<
と>
を削除してください。MDXとGFMはすでにリテラルを自動リンクできます。
[email protected]
[[email protected]](mailto:[email protected])
http://localhost:3000
[http://localhost:3000](http://localhost:3000)
小文字のMDXComponentマッピング
カスタムのMDXComponent
マッピングを提供するユーザーの場合、コンポーネントは「サンドボックス化」されました
h1
のMDXComponent
マッピングは、# hi
に対してのみ使用され、<h1>hi</h1>
に対しては使用されません。- 小文字のカスタム要素名は、それぞれの
MDXComponent
コンポーネントに置き換えられなくなりました。
MDXComponent
コンポーネントマッピングが以前のように適用されず、カスタムコンポーネントが使用されなくなる可能性があります。
ネイティブのMarkdown要素の場合、小文字を引き続き使用できます: p
, h1
, img
, a
...
その他の要素には、大文字の名前を使用してください。
import MDXComponents from '@theme-original/MDXComponents';
export default {
...MDXComponents,
p: (props) => <p {...props} className="my-paragraph"/>
- myElement: (props) => <div {...props} className="my-class" />,
+ MyElement: (props) => <div {...props} className="my-class" />,
};
意図しない余分な段落
MDX v3では、余分な改行を必要とせずに、JSXとMarkdownをより簡単にインターリーブできるようになりました。複数の行にコンテンツを記述すると、新しい予期された<p>
タグが生成されることもあります。
このコンテンツがMDX v1とv3でどのように異なるレンダリングされるかを確認してください。
<div>Some **Markdown** content</div>
<div>
Some **Markdown** content
</div>
<div>Some **Markdown** content</div>
<div>Some **Markdown** content</div>
<div>Some <strong>Markdown</strong> content</div>
<div><p>Some <strong>Markdown</strong> content</p></div>
余分な<p>
タグが必要ない場合は、ケースバイケースでコンテンツをリファクタリングして、単一行のJSXタグを使用します。
<figure>
<img src="/img/myImage.png" alt="My alt" />
- <figcaption>
- My image caption
- </figcaption>
+ <figcaption>My image caption</figcaption>
</figure>
また、まだMarkdown構文を使用する予定がない場合は、{
と}
でコンテンツをラップして、余分な<p>
タグを回避することもできます。
-<figure>
+{<figure>
<img src="/img/myImage.png" alt="My alt" />
<figcaption>
My image caption
</figcaption>
-</figure>
+</figure>}
意図しないディレクティブの使用
Docusaurus v3では、アドモニション、および今後リリースされるDocusaurus機能をサポートするための一般的な方法として、Markdownディレクティブ(remark-directiveで実装) が使用されるようになりました。
This is a :textDirective
::leafDirective
:::containerDirective
Container directive content
:::
ディレクティブは、他のRemarkプラグインで処理される目的で解析されます。未処理のディレクティブは無視され、元の形式でレンダリングされません。
The AWS re:Invent conf is great
:Invent
がテキストディレクティブとして解析されるため、これは以下のようにレンダリングされます。
The AWS re
conf is great
- HTMLコードを使用する:
:
:
の後にスペースを追加する (意味がある場合):: text
- エスケープする:
\:
サポートされていないインデントされたコードブロック
MDXは、インデントされたテキストをコードブロックとして変換しなくなりました。
console.log("hello");
アップグレードでは、通常、新しいMDXコンパイルエラーは発生しませんが、コードブロックがなくなったため、コンテンツが予期しない方法でレンダリングされる可能性があります。
インデントではなく、通常のコードブロック構文を使用します。
```js
console.log('hello');
```
その他のMarkdownの非互換性
スペースまたは句読点で始まる/終わる強調
新しいMDXパーサーは、CommonMark仕様に厳密に準拠するようになりました。CommonMark仕様では、特に単語を分割するためにスペースを使用しない言語との互換性のないスペースと句読点に関する強調のルールが、v0.14以降導入されています。
日本語と中国語が最も影響を受けていますが、一部の他の言語(例: タイ語とクメール語)にも影響を与える可能性があります。たとえば、インラインコードやリンクを強調しようとする場合です。単語を分割するためにスペースを使用する言語は、影響がはるかに少なくなります。
次の例の**
(`**`
以外) は、Docusaurus 2では意図したとおりに解析されましたが、Docusaurus 3では解析されなくなりました。
**Do not end a range of emphasis with a space. **Or `**` will not work as intended.
<!-- Japanese -->
**「。」の後に文を続けると`**`が意図した動作をしません。**また、**[リンク](https://docusaurus.dokyumento.jp/)**や**`コード`**のすぐ外側に`**`、そのさらに外側に句読点以外がある場合も同様です。
詳細な条件とアップグレード方法を参照してください
*
または**
が次のいずれかの条件に一致する場合、強調マークの先頭として機能しなくなります
- 次の文字がスペースである場合(例:
word* word
) - 前の文字が句読点文字で、次の文字が文字である場合(スペースまたは句読点文字ではない)(例:
文**(文)
)
反対に、*
または**
が次のいずれかの条件に一致する場合、強調マークの終わりとして機能しなくなります
- 前の文字がスペースである場合(例:
word *word
) - 次の文字が句読点文字で、前の文字が文字である場合(例:
文。**文
)
「句読点文字」には、非ASCII文字、括弧、引用符、および%
や@
を含むいくつかの記号が含まれます。より厳密に言えば、2文字のUnicodeカテゴリがP
で始まる文字は、ここで句読点文字として扱われます。
問題のある強調マークがスペースの隣にある場合は、強調の範囲外にスペースを移動します
**Do not end a range of emphasis with a space.** Or `**` will not work.
問題のある強調マークが句読点文字と文字の両方で囲まれている場合は、コンテンツを変更せずに次の方法で修正できます。
- もしドキュメントがプレーンなMarkdownである場合は、MDXに変換してください。
- 問題のある強調マークを生のHTMLタグ(
<em>
または<strong>
)に置き換えてください。
<strong>「。」の後に文を続けると`**`が意図した動作をしません。</strong>また、<strong>[リンク](https://docusaurus.dokyumento.jp/)</strong>や<strong>`コード`</strong>のすぐ外側に`**`、そのさらに外側に句読点以外がある場合も同様です。
理想的な解決策ではありませんが、ドキュメントをMDXに変換せずに、以下のいずれかの方法も可能です。
-
最も外側の句読点を強調マークの外に移動してください。
japanese.md**「。」の後に文を続けると`**`が意図した動作をしません**。また、[**リンク**](https://docusaurus.dokyumento.jp/)や・・・
-
問題のある
*
または**
のすぐ外側にスペースを挿入してください。この解決策では、ドキュメントをMDXに変換する必要はありません。japanese.md**「。」の後に文を続けると`**`が意図した動作をしません。** また、**[リンク](https://docusaurus.dokyumento.jp/)** や **`コード`** のすぐ外側に`**`、そのさらに外側に句読点以外がある場合も同様です。
MDXプラグイン
MDXエコシステム内の公式パッケージ(Unified、Remark、Rehypeなど)はすべて、現在ES Modulesのみであり、CommonJSをサポートしなくなりました。
実際には、require("remark-plugin")
のようなことはできなくなったということです。
Docusaurus v3は、現在ES Modules構成ファイルをサポートしています。設定ファイルをESモジュールに移行することをお勧めします。これにより、Remarkプラグインを簡単にインポートできるようになります。
import remarkPlugin from 'remark-plugin';
export default {
title: 'Docusaurus',
/* site config using remark plugins here */
};
CommonJSモジュールを使用し続けたい場合は、動的インポートを回避策として使用できます。これにより、CommonJSモジュール内でESモジュールをインポートできます。幸いなことに、Docusaurusの設定は、非同期関数の使用をサポートしているため、それが可能です。
module.exports = async function () {
const myPlugin = (await import('remark-plugin')).default;
return {
// site config...
};
};
カスタムのRemarkまたはRehypeプラグインを作成した場合、新しいASTの構造により、それらをリファクタリングするか、場合によっては完全に書き換える必要があるかもしれません。プラグイン作者がコードをアップグレードするのを支援するために、専用のサポートディスカッションを作成しました。
フォーマッター
最も一般的なフォーマッターであるPrettierは、Docusaurus v3.0.0の時点では、MDX v3ではなく、レガシーなMDX v1のみをサポートしています。コードの非互換部分の前に{/* prettier-ignore */}
を追加すると、Prettierで動作させることができます。
{/* prettier-ignore */}
<SomeComponent>Some long text in the component</SomeComponent>
{/* prettier-ignore */}
の挿入が多すぎることにうんざりした場合は、PrettierがMDX v3のサポートを開始するまで、.prettierignore
ファイルに以下を追加して、PrettierによるMDXフォーマットを無効にすることを検討できます。
*.mdx
その他の破壊的変更
MDX v3のアップグレード以外に、Docusaurus v3に伴う破壊的変更の包括的なリストを以下に示します。
Node.js v18.0
Node.js 16はサポート終了に達し、Docusaurus v3はNode.js >= 18.0を必要とするようになりました。
コンピュータにNode.js 18.0以降をインストールしてください。
必要に応じて、継続的インテグレーション、CDN、またはホストを構成して、この新しいNode.jsバージョンを使用するようにしてください。
また、サイトのpackage.json
を更新して、サポートされていない古いバージョンの使用を防止できます。
{
"engines": {
- "node": ">=16.14"
+ "node": ">=18.0"
}
}
Docusaurus v3にアップグレードする前に、Docusaurus v2サイトをNode.js 18にアップグレードしてください。
React v18.0+
Docusaurus v3は、現在React >= 18.0を必要とします。
React 18には、サイト用に作成したカスタムReactコードの量に応じて比較的簡単に処理できるはずの独自の破壊的変更が付属しています。公式のテーマとプラグインはReact 18と互換性があります。
公式のReact v18.0とReact 18へのアップグレード方法を読み、どのコンポーネントがこのアップグレードの影響を受ける可能性があるかを把握するために、独自のReactコードを確認してください。
特に以下に注意することをお勧めします。
- ステートフルコンポーネントの自動バッチ処理
- コンソールに報告される新しいReactハイドレーションエラー
React 18には新機能が付属しています
<Suspense>
React.lazy()
startTransition
それらのDocusaurusサポートは実験的と見なされています。将来的には統合を調整する必要があり、実行時の動作が異なる可能性があります。
Prism-React-Renderer v2.0+
Docusaurus v3は、prism-react-renderer
をv2.0以降にアップグレードします。このライブラリは、コードブロックの構文強調表示に使用されます。
これは、破壊的変更を含む新しいメジャーライブラリバージョンであり、厳密な後方互換性を保証することはできません。prism-react-renderer
v2のリリースノートは完全ではありませんが、Docusaurusユーザーが認識しておくべき3つの主要な変更点があります。
依存関係をアップグレードする必要があります
{
"dependencies": {
- "prism-react-renderer": "^1.3.5",
+ "prism-react-renderer": "^2.1.0",
}
Docusaurus構成ファイルでテーマをインポートするためのAPIが更新されました
- const lightTheme = require('prism-react-renderer/themes/github');
- const darkTheme = require('prism-react-renderer/themes/dracula');
+ const {themes} = require('prism-react-renderer');
+ const lightTheme = themes.github;
+ const darkTheme = themes.dracula;
以前は、react-prism-render
v1はデフォルトでより多くの言語を含めていました。v2.0以降では、デフォルトで含まれる言語が少なくなりました。Docusaurus構成に追加の言語を追加する必要がある場合があります
const siteConfig = {
themeConfig: {
prism: {
additionalLanguages: ['bash', 'diff', 'json'],
},
},
};
React-Live v4.0+
@docusaurus/theme-live-codeblock
パッケージのユーザー向けに、Docusaurus v3はreact-live
をv4.0以降にアップグレードします。
remark-emoji v4.0+
Docusaurus v3はremark-emoji
をv4.0以降にアップグレードします。このライブラリは、Markdownでの:emoji:
ショートカットをサポートするためのものです。
ほとんどのDocusaurusユーザーは何もする必要はありません。絵文字ショートコードのユーザーは、変更ログを読み、絵文字が期待どおりにレンダリングされ続けることを再確認する必要があります。
破壊的変更 node-emojiをv1からv2に更新します。この変更により、多くの新しい絵文字のサポートが導入され、GitHubで無効になった古い絵文字ショートコードが削除されました。
Mermaid v10.4+
@docusaurus/theme-mermaid
パッケージのユーザー向けに、Docusaurus v3はmermaid
をv10.4以降にアップグレードします。
理論上は何もする必要はなく、既存の図は以前と同じように動作し続けるはずです。
ただし、これは破壊的変更を含む新しいメジャーライブラリバージョンであり、厳密な後方互換性を保証することはできません。問題が発生した場合に備えて、v10の変更ログをお読みください。
TypeScript v5.1+
Docusaurus v3は、現在TypeScript >= 5.1を必要とします。
TypeScript 5+を使用するように依存関係をアップグレードしてください。
{
"devDependencies": {
- "typescript": "~4.7.4"
+ "typescript": "~5.2.2"
}
}
TypeScript基本設定
公式のDocusaurus TypeScript構成は、外部パッケージ@tsconfig/docusaurus
から、新しいモノレポパッケージ@docusaurus/tsconfig
に内部化されました。
この新しいパッケージは、他のすべてのDocusaurusコアパッケージとともにバージョン管理され、主要バージョンアップグレードでのTypeScriptの後方互換性と破壊的変更を保証するために使用されます。
外部TypeScript構成パッケージを新しい公式パッケージに切り替えます。
{
"devDependencies": {
- "@tsconfig/docusaurus": "^1.0.7",
+ "@docusaurus/tsconfig": "3.0.0",
}
}
tsconfig.json
ファイルで使用してください。
{
- "extends": "@tsconfig/docusaurus/tsconfig.json",
+ "extends": "@docusaurus/tsconfig",
"compilerOptions": {
"baseUrl": "."
}
}
新しい構成ローダー
Docusaurus v3は、内部構成ローディングライブラリをimport-fresh
からjiti
に変更します。これは、docusaurus.config.js
やsidebars.js
などのファイル、およびDocusaurusプラグインを読み込む役割を担います。
理論上は何もする必要はなく、既存の構成ファイルは以前と同じように動作し続けるはずです。
ただし、これは主要な依存関係のスワップであり、微妙な動作変更が発生する可能性があります。
注意喚起の警告
歴史的な理由から、ドキュメント化されていない :::warning
という注意喚起をサポートしており、これは赤色で表示されます。
これは Docusaurus v2 の :::warning
注意喚起です。
しかし、色とアイコンは常に間違っていました。Docusaurus v3 では :::warning
注意喚起が正式に再導入され、ドキュメント化され、色とアイコンが修正されました。
これは Docusaurus v3 の :::warning
注意喚起です。
以前にドキュメント化されていない :::warning
注意喚起を使用していた場合は、各使用箇所で黄色が適切な色になっているか確認してください。赤い色を維持したい場合は、代わりに :::danger
を使用してください。
Docusaurus v3 では、:::caution
注意喚起も非推奨になりました。:::caution
(黄色)を :::warning
(黄色)または :::danger
(赤色)のいずれかにリファクタリングしてください。
「注意」というタイトルを維持したい場合は、:::warning[caution]
(黄色)にリファクタリングすることをお勧めします。
バージョン管理されたサイドバー
この破壊的な変更は、v2.0.0-beta.10
(2021年12月)より前にドキュメントをバージョン管理していた、Docusaurus v2 の初期採用者にのみ影響します。
バージョン v1.0.0
を作成するとき、サイドバーファイルには、Docusaurus v3 ではサポートされなくなったプレフィックス version-v1.0.0/
が含まれていました。
{
"version-v1.0.0/docs": [
"version-v1.0.0/introduction",
"version-v1.0.0/prerequisites"
]
}
バージョン管理されたサイドバーから不要なバージョン管理プレフィックスを削除してください。
{
"docs": ["introduction", "prerequisites"]
}
ブログフィードの制限
@docusaurus/plugin-content-blog
は、デフォルトで RSS フィードを最新の 20 エントリに制限するようになりました。大規模な Docusaurus ブログの場合、これは RSS ファイルが肥大化するのを避けるためのより適切なデフォルト値です。
この新しいデフォルトの動作が気に入らない場合は、新しい limit: false
フィードオプションを使用して、以前の「無制限フィード」の動作に戻すことができます。
const blogOptions = {
feedOptions: {
limit: false,
},
};
ドキュメントテーマのリファクタリング
ドキュメント関連のテーマコンポーネント(@theme/DocPage
など)をスウィズルしたユーザーの場合、これらのコンポーネントは、カスタマイズを容易にするために大幅にリファクタリングされています。
技術的には、これらのコンポーネントはスウィズルが安全ではないとフラグが立てられているため、これは破壊的な変更ではありません。ただし、多くの Docusaurus サイトがドキュメント関連のコンポーネントをエジェクトしており、カスタマイズによって Docusaurus が破損する可能性があることを知っておくと役立ちます。
スウィズルしたすべてのコンポーネントを削除し、再度スウィズルして、新しく更新されたコンポーネントの上にカスタマイズを再適用してください。
または、プルリクエストのメモ を参照して、新しいテーマコンポーネントツリー構造を理解し、最終的にスウィズルしたコンポーネントを手動で修正することもできます。
オプションの変更
一部の変更は必須ではありませんが、Docusaurus v3 を最大限に活用するために知っておくと便利です。
自動 JSX ランタイム
Docusaurus v3 は、React 18 の 「自動」JSX ランタイムを使用するようになりました。
React API を使用しない JSX ファイルでは、React をインポートする必要がなくなりました。
- import React from 'react';
export default function MyComponent() {
return <div>Hello</div>;
}
ESM および TypeScript 構成
Docusaurus v3 は ESM および TypeScript 設定ファイルをサポートしており、これらの新しいオプションを採用することをお勧めします。
export default {
title: 'Docusaurus',
url: 'https://docusaurus.dokyumento.jp',
// your site config ...
};
import type {Config} from '@docusaurus/types';
import type * as Preset from '@docusaurus/preset-classic';
const config: Config = {
title: 'My Site',
favicon: 'img/favicon.ico',
presets: [
[
'classic',
{
/* Your preset config here */
} satisfies Preset.Options,
],
],
themeConfig: {
/* Your theme config here */
} satisfies Preset.ThemeConfig,
};
export default config;
.mdx
拡張子の使用
Markdown ファイル内で JSX、import
、または export
(つまり、MDX 機能)を使用する場合は、.mdx
拡張子を使用することをお勧めします。これは意味的により正確であり、外部ツール(IDE、フォーマッタ、リンターなど)との互換性が向上します。
Docusaurus の将来のバージョンでは、.md
ファイルはこれらの機能をサポートしていない標準の CommonMark として解析されます。Docusaurus v3 では、.md
ファイルは引き続き MDX ファイルとしてコンパイルされますが、CommonMark をオプトインできるようになります。
数式パッケージのアップグレード
Docusaurus を使用して 数式をレンダリングする場合は、MDX プラグインをアップグレードする必要があります。
Docusaurus v3 (MDX v3 を使用) では、remark-math 6
と rehype-katex 7
を必ず使用してください。他のバージョンが動作することは保証できません。
{
- "remark-math": "^3.0.0",
+ "remark-math": "^6.0.0",
- "rehype-katex": "^5.0.0"
+ "rehype-katex": "^7.0.0"
}
hast-util-is-element
は Docusaurus v3 では不要になりました。インストール済みで、他の場所で使用しない場合は、npm uninstall hast-util-is-element
を実行して削除できます。
MDX v1 の互換性をオフにする
Docusaurus v3 には、デフォルトでオンになっている MDX v1 の互換性オプションが付属しています。
export default {
markdown: {
mdx1Compat: {
comments: true,
admonitions: true,
headingIds: true,
},
},
};
comments
オプション
このオプションを使用すると、HTML コメントは公式にはサポートされなくなりましたが、MDX 内で HTML コメントを使用できます。
MDX ファイルの場合、HTML <!-- comments -->
の代わりに、徐々に MDX {/* comments */}
を使用し、この互換性オプションをオフにすることをお勧めします。
デフォルトのブログの切り捨てマーカーは、<!-- truncate -->
と {/* truncate */}
の両方をサポートするようになりました。
admonitions
オプション
このオプションを使用すると、Docusaurus v2 の 注意喚起タイトル構文を使用できます。
:::note Your Title
content
:::
Docusaurus は現在、Markdown Directives ( remark-directive で実装) を使用して注意喚起を実装しており、ディレクティブラベルを提供するための構文には角括弧が必要です。
:::note[Your Title]
content
:::
新しい Markdown ディレクティブラベル構文を徐々に使用し、この互換性オプションをオフにすることをお勧めします。
headingIds
オプション
このオプションを使用すると、Docusaurus v2 の 明示的な見出し ID 構文を使用できます。
### Hello World {#my-explicit-id}
この構文は現在無効な MDX であり、{
文字をエスケープする必要があります: \{#my-explicit-id}
。
MDX の新しいバージョンと互換性のある新しい構文を提供するまでは、この互換性オプションをオンにしておくことをお勧めします。
トラブルシューティング
アップグレードで問題が発生した場合、最初に試すべきことは次のとおりです。
- MDX プレイグラウンド、または
npx docusaurus-mdx-checker
を使用して、すべてのドキュメントがコンパイルされていることを確認してください。 node_modules
とpackage-lock.json
を削除してから、再度npm install
を実行してください。docusaurus clear
を実行してキャッシュをクリアしてください。- Docusaurus v3 をサポートしていない可能性のあるサードパーティ製プラグインを削除してください。
- スウィズルしたすべてのコンポーネントを削除してください。
試行錯誤したら、次のサポートチャネルを通じてサポートを依頼できます。
- Docusaurus v3 - アップグレードサポート
- Docusaurus v3 - Discord チャンネル #migration-v2-to-v3
- MDX v3 - アップグレードサポート
- MDX v3 - Remark/Rehype プラグインサポート
- MDX v3 - Discord チャンネル #migration-mdx-v3
当社の時間は貴重です。サポートリクエストが無視されないようにするために、次のことをお願いいたします。
- docusaurus.new で作成するのが理想的な、簡単に実行できる最小限の再現を提供してください。
- 問題が発生している様子を示すライブデプロイメント URL を提供してください(サイトをビルドできる場合)。
- 「動作しない」のような曖昧な表現ではなく、問題を明確に説明してください。
- コードスニペット、リポジトリ URL、git ブランチ URL、完全なスタックトレース、スクリーンショット、ビデオなど、可能な限り関連性の高い資料を含めてください。
- 明確かつ簡潔にリクエストを提示し、当社がお客様を支援するために努力されたことを示してください。
または、有料の Docusaurus サービスプロバイダーにこのアップグレードの実行を依頼することもできます。サイトがオープンソースの場合は、コミュニティに 無料の善意による支援を求めることもできます。