Skip to main content

複数のインスタンス

The @docusaurus/plugin-content-docs plugin can support multi-instance.

メモ

This feature is only useful for versioned documentation. このページを読む前に、docsのバージョン管理について熟知しておくことをお勧めします。 If you just want multiple sidebars, you can do so within one plugin.

利用例

1つの Docusaurus サイトで、2つ以上の異なるドキュメントのセットをホストしたい場合があります。

これらのドキュメントは、バージョンアップやリリースのライフサイクルが異なる場合もあります。

モバイル SDK

クロスプラットフォームのモバイル SDK を構築する場合、2つのドキュメントを用意することがあります:

  • Android SDK documentation (v1.0, v1.1)
  • iOS SDK documentation (v1.0, v2.0)

この場合、モバイル SDK のドキュメントごとに、個別の docs プラグインインスタンスを使用することができます。

警告

それぞれのドキュメントのインスタンスが非常に大きい場合は、2つの異なる Docusarus サイトを作成してください。

誰かが iOS のドキュメントを編集した場合、変更しなかった Android のドキュメントも含めて、すべてを再構築することは本当に便利ですか?

バージョン管理されたドキュメントとバージョン管理されていないドキュメント

あるドキュメントをバージョン管理したい一方で、他のドキュメントはもっと「グローバル」であり、バージョン管理するのは無駄だと感じることがあります。

Docusaurus のウェブサイト自体でも、このパターンを利用しています:

セットアップ

2つのドキュメントがあるとします:

  • Product: 製品に関するバージョン管理されたドキュメント
  • Community: 製品関連のバージョン管理されていないドキュメント

この場合、サイト構成で同じプラグインを2回使用する必要があります。

警告

@docusaurus/preset-classic already includes a docs plugin instance for you!

プリセットを使用する場合:

docusaurus.config.js
export default {
presets: [
[
'@docusaurus/preset-classic',
{
docs: {
// id: 'product', // omitted => default instance
path: 'product',
routeBasePath: 'product',
sidebarPath: './sidebarsProduct.js',
// ... other options
},
},
],
],
plugins: [
[
'@docusaurus/plugin-content-docs',
{
id: 'community',
path: 'community',
routeBasePath: 'community',
sidebarPath: './sidebarsCommunity.js',
// ... other options
},
],
],
};

プリセットを利用しない場合:

docusaurus.config.js
export default {
plugins: [
[
'@docusaurus/plugin-content-docs',
{
// id: 'product', // omitted => default instance
path: 'product',
routeBasePath: 'product',
sidebarPath: './sidebarsProduct.js',
// ... other options
},
],
[
'@docusaurus/plugin-content-docs',
{
id: 'community',
path: 'community',
routeBasePath: 'community',
sidebarPath: './sidebarsCommunity.js',
// ... other options
},
],
],
};

Don't forget to assign a unique id attribute to plugin instances.

メモ

We consider that the product instance is the most important one, and make it the "default" instance by not assigning any ID.

バージョン管理されたパス

それぞれのプラグインインスタンスは、バージョン管理された docs を個別のフォルダーに保存します。

デフォルトのプラグインインスタンスはこれらのパスを利用します:

  • website/versions.json
  • website/versioned_docs
  • website/versioned_sidebars

The other plugin instances (with an id attribute) will use these paths:

  • website/[pluginId]_versions.json
  • website/[pluginId]_versioned_docs
  • website/[pluginId]_versioned_sidebars
ヒント

You can omit the id attribute (defaults to default) for one of the docs plugin instances.

インスタンスパスのパスはよりシンプルになり、単一インスタンスのセットアップと互換性があります。

新しいバージョンのタグ付け

それぞれのプラグインインスタンスは、新しいバージョンにタグ付けするための独自のCLIコマンドを持ちます。 これらを実行すると表示されます:

npm run docusaurus -- --help

Product / デフォルトの docs プラグインインスタンスをバージョンアップする:

npm run docusaurus docs:version 1.0.0

デフォルトでない / Communityの docs プラグインインスタンスをバージョンアップする:

npm run docusaurus docs:version:community 1.0.0

ナビバーの項目

Each docs-related theme navbar items take an optional docsPluginId attribute.

たとえば、モバイルSDK (iOS と Android) それぞれに1つのバージョンのドロップダウンを用意したい場合、次のようにします:

docusaurus.config.js
export default {
themeConfig: {
navbar: {
items: [
{
type: 'docsVersionDropdown',
docsPluginId: 'ios',
},
{
type: 'docsVersionDropdown',
docsPluginId: 'android',
},
],
},
},
};