diff --git a/packages/docusaurus-plugin-content-docs/src/index.ts b/packages/docusaurus-plugin-content-docs/src/index.ts index a5e8b419a2..473314397f 100644 --- a/packages/docusaurus-plugin-content-docs/src/index.ts +++ b/packages/docusaurus-plugin-content-docs/src/index.ts @@ -63,6 +63,7 @@ const DEFAULT_OPTIONS: PluginOptions = { showLastUpdateTime: false, showLastUpdateAuthor: false, admonitions: {}, + excludeNextVersionDocs: false, }; function getFirstDocLinkOfSidebar( @@ -175,25 +176,30 @@ export default function pluginContentDocs( // Prepare metadata container. const docsMetadataRaw: DocsMetadataRaw = {}; const docsPromises = []; + const includeDefaultDocs = !( + options.excludeNextVersionDocs && process.argv[2] === 'build' + ); // Metadata for default/master docs files. - const docsFiles = await globby(include, { - cwd: docsDir, - }); - docsPromises.push( - Promise.all( - docsFiles.map(async (source) => { - const metadata: MetadataRaw = await processMetadata({ - source, - refDir: docsDir, - context, - options, - env, - }); - docsMetadataRaw[metadata.id] = metadata; - }), - ), - ); + if (includeDefaultDocs) { + const docsFiles = await globby(include, { + cwd: docsDir, + }); + docsPromises.push( + Promise.all( + docsFiles.map(async (source) => { + const metadata: MetadataRaw = await processMetadata({ + source, + refDir: docsDir, + context, + options, + env, + }); + docsMetadataRaw[metadata.id] = metadata; + }), + ), + ); + } // Metadata for versioned docs. if (versioning.enabled) { @@ -222,13 +228,14 @@ export default function pluginContentDocs( } // Load the sidebars and create docs ordering. - const sidebarPaths = [ - sidebarPath, - ...versionsNames.map( - (versionName) => - `${versionedSidebarsDir}/${versionName}-sidebars.json`, - ), - ]; + const sidebarPaths = versionsNames.map( + (versionName) => `${versionedSidebarsDir}/${versionName}-sidebars.json`, + ); + + if (includeDefaultDocs) { + sidebarPaths.unshift(sidebarPath); + } + const loadedSidebars: Sidebar = loadSidebars(sidebarPaths); const order: Order = createOrder(loadedSidebars); diff --git a/packages/docusaurus-plugin-content-docs/src/types.ts b/packages/docusaurus-plugin-content-docs/src/types.ts index 62698f8e13..5c0da4f43a 100644 --- a/packages/docusaurus-plugin-content-docs/src/types.ts +++ b/packages/docusaurus-plugin-content-docs/src/types.ts @@ -25,6 +25,7 @@ export interface PluginOptions extends MetadataOptions, PathOptions { remarkPlugins: ([Function, object] | Function)[]; rehypePlugins: string[]; admonitions: any; + excludeNextVersionDocs: boolean; } export type SidebarItemDoc = { diff --git a/website/docs/using-plugins.md b/website/docs/using-plugins.md index 1ebb8d0f19..16370db371 100644 --- a/website/docs/using-plugins.md +++ b/website/docs/using-plugins.md @@ -288,6 +288,12 @@ module.exports = { * Whether to display the last date the doc was updated. */ showLastUpdateTime: false, + /** + * Skip the next release docs when versioning is enabled. + * This will not generate HTML files in the production build for documents + * in `/docs/next` directory, only versioned docs. + */ + excludeNextVersionDocs: false, }, ], ],