From 83cac31e738ff9aeb3290a8c4ee28c30a665e22f Mon Sep 17 00:00:00 2001 From: Lukas Vogel Date: Wed, 9 Jul 2025 10:53:43 +0200 Subject: [PATCH] Add generateSchemas option This works similar to showSchemas but it doesn't add the schemas to the sidebar. This is useful to generate the schemas and then embed them in other pages as needed. --- README.md | 1 + demo/docs/intro.mdx | 1 + packages/docusaurus-plugin-openapi-docs/README.md | 1 + .../docusaurus-plugin-openapi-docs/src/openapi/openapi.ts | 7 ++++++- packages/docusaurus-plugin-openapi-docs/src/options.ts | 1 + packages/docusaurus-plugin-openapi-docs/src/types.ts | 1 + 6 files changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 642fcd31a..410daaccb 100644 --- a/README.md +++ b/README.md @@ -174,6 +174,7 @@ The `docusaurus-plugin-openapi-docs` plugin can be configured with the following | `versions` | `object` | `null` | _Optional:_ Options for versioning configuration. See below for a list of supported options. | | `markdownGenerators` | `object` | `null` | _Optional:_ Customize MDX content via generator functions. See below for a list of supported options. | | `showSchemas` | `boolean` | `null` | _Optional:_ If set to `true`, generates standalone schema pages and adds them to the sidebar. | +| `generateSchemas` | `boolean` | `null` | _Optional:_ If set to `true`, generates schema pages for all schemas referenced in the OpenAPI spec (not added in sidebar). | ### sidebarOptions diff --git a/demo/docs/intro.mdx b/demo/docs/intro.mdx index d4779c3f7..6361420be 100644 --- a/demo/docs/intro.mdx +++ b/demo/docs/intro.mdx @@ -221,6 +221,7 @@ The `docusaurus-plugin-openapi-docs` plugin can be configured with the following | `versions` | `object` | `null` | _Optional:_ Options for versioning configuration. See below for a list of supported options. | | `markdownGenerators` | `object` | `null` | _Optional:_ Customize MDX content via generator functions. See below for a list of supported options. | | `showSchemas` | `boolean` | `null` | _Optional:_ If set to `true`, generates standalone schema pages and adds them to the sidebar. | +| `generateSchemas` | `boolean` | `null` | _Optional:_ If set to `true`, generates schema pages for all schemas referenced in the OpenAPI spec (not added in sidebar). | ### sidebarOptions diff --git a/packages/docusaurus-plugin-openapi-docs/README.md b/packages/docusaurus-plugin-openapi-docs/README.md index 73121243d..1d8fd7c23 100644 --- a/packages/docusaurus-plugin-openapi-docs/README.md +++ b/packages/docusaurus-plugin-openapi-docs/README.md @@ -174,6 +174,7 @@ The `docusaurus-plugin-openapi-docs` plugin can be configured with the following | `versions` | `object` | `null` | _Optional:_ Options for versioning configuration. See below for a list of supported options. | | `markdownGenerators` | `object` | `null` | _Optional:_ Customize MDX content via generator functions. See below for a list of supported options. | | `showSchemas` | `boolean` | `null` | _Optional:_ If set to `true`, generates standalone schema pages and adds them to the sidebar. | +| `generateSchemas` | `boolean` | `null` | _Optional:_ If set to `true`, generates schema pages for all schemas referenced in the OpenAPI spec (not added in sidebar). | ### sidebarOptions diff --git a/packages/docusaurus-plugin-openapi-docs/src/openapi/openapi.ts b/packages/docusaurus-plugin-openapi-docs/src/openapi/openapi.ts index 697fd2d1a..544bf7728 100644 --- a/packages/docusaurus-plugin-openapi-docs/src/openapi/openapi.ts +++ b/packages/docusaurus-plugin-openapi-docs/src/openapi/openapi.ts @@ -423,6 +423,7 @@ function createItems( if ( options?.showSchemas === true || + options?.generateSchemas === true || Object.entries(openapiData?.components?.schemas ?? {}) .flatMap(([_, s]) => s["x-tags"]) .filter((item) => !!item).length > 0 @@ -431,7 +432,11 @@ function createItems( for (let [schema, schemaObject] of Object.entries( openapiData?.components?.schemas ?? {} )) { - if (options?.showSchemas === true || schemaObject["x-tags"]) { + if ( + options?.showSchemas === true || + options?.generateSchemas === true || + schemaObject["x-tags"] + ) { const baseIdSpaces = schemaObject?.title?.replace(" ", "-").toLowerCase() ?? ""; const baseId = kebabCase(baseIdSpaces); diff --git a/packages/docusaurus-plugin-openapi-docs/src/options.ts b/packages/docusaurus-plugin-openapi-docs/src/options.ts index 3c46e27f5..ac5fc6e92 100644 --- a/packages/docusaurus-plugin-openapi-docs/src/options.ts +++ b/packages/docusaurus-plugin-openapi-docs/src/options.ts @@ -48,6 +48,7 @@ export const OptionsSchema = Joi.object({ sidebarOptions: sidebarOptions, markdownGenerators: markdownGenerators, showSchemas: Joi.boolean(), + generateSchemas: Joi.boolean(), disableCompression: Joi.boolean(), version: Joi.string().when("versions", { is: Joi.exist(), diff --git a/packages/docusaurus-plugin-openapi-docs/src/types.ts b/packages/docusaurus-plugin-openapi-docs/src/types.ts index eec717e5c..627a439f6 100644 --- a/packages/docusaurus-plugin-openapi-docs/src/types.ts +++ b/packages/docusaurus-plugin-openapi-docs/src/types.ts @@ -51,6 +51,7 @@ export interface APIOptions { proxy?: string; markdownGenerators?: MarkdownGenerator; showSchemas?: boolean; + generateSchemas?: boolean; disableCompression?: boolean; }