Docs Multi-instance
The @docusaurus/plugin-content-docs plugin can support multi-instance.
Use-cases
Section titled “Use-cases”Sometimes you want a Docusaurus site to host 2 distinct sets of documentation (or more).
These documentations may even have different versioning/release lifecycles.
Mobile SDKs documentation
Section titled “Mobile SDKs documentation”If you build a cross-platform mobile SDK, you may have 2 documentations:
- Android SDK documentation (
v1.0,v1.1) - iOS SDK documentation (
v1.0,v2.0)
In this case, you can use a distinct docs plugin instance per mobile SDK documentation.
Versioned and unversioned doc
Section titled “Versioned and unversioned doc”Sometimes, you want some documents to be versioned, while other documents are more "global", and it feels useless to version them.
We use this pattern on the Docusaurus website itself:
- The /docs/* section is versioned
- The /community/* section is unversioned
Suppose you have 2 documentations:
- Product: some versioned doc about your product
- Community: some unversioned doc about the community around your product
In this case, you should use the same plugin twice in your site configuration.
When using the preset:
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 }, ], ],};When not using the preset:
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.
Versioned paths
Section titled “Versioned paths”Each plugin instance will store versioned docs in a distinct folder.
The default plugin instance will use these paths:
website/versions.jsonwebsite/versioned_docswebsite/versioned_sidebars
The other plugin instances (with an id attribute) will use these paths:
website/[pluginId]_versions.jsonwebsite/[pluginId]_versioned_docswebsite/[pluginId]_versioned_sidebars
Tagging new versions
Section titled “Tagging new versions”Each plugin instance will have its own CLI command to tag a new version. They will be displayed if you run:
npm run docusaurus -- --helpTo version the product/default docs plugin instance:
npm run docusaurus docs:version 1.0.0To version the non-default/community docs plugin instance:
npm run docusaurus docs:version:community 1.0.0Docs navbar items
Section titled “Docs navbar items”Each docs-related theme navbar items take an optional docsPluginId attribute.
For example, if you want to have one version dropdown for each mobile SDK (iOS and Android), you could do:
export default { themeConfig: { navbar: { items: [ { type: 'docsVersionDropdown', docsPluginId: 'ios', }, { type: 'docsVersionDropdown', docsPluginId: 'android', }, ], }, },};