mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-09 23:27:28 +02:00
fix(v2): do not create route for document that serve as docs home page (#2861)
This commit is contained in:
parent
6797af660f
commit
e68b81bc33
3 changed files with 36 additions and 52 deletions
|
@ -29,7 +29,7 @@ Object {
|
|||
"type": "link",
|
||||
},
|
||||
Object {
|
||||
"href": "/docs/hello",
|
||||
"href": "/docs",
|
||||
"label": "Hello, World !",
|
||||
"type": "link",
|
||||
},
|
||||
|
@ -41,7 +41,7 @@ Object {
|
|||
"collapsed": true,
|
||||
"items": Array [
|
||||
Object {
|
||||
"href": "/docs/hello",
|
||||
"href": "/docs",
|
||||
"label": "Hello, World !",
|
||||
"type": "link",
|
||||
},
|
||||
|
@ -88,14 +88,6 @@ Array [
|
|||
},
|
||||
"path": "/docs/foo/bazSlug.html",
|
||||
},
|
||||
Object {
|
||||
"component": "@theme/DocItem",
|
||||
"exact": true,
|
||||
"modules": Object {
|
||||
"content": "@site/docs/hello.md",
|
||||
},
|
||||
"path": "/docs/hello",
|
||||
},
|
||||
Object {
|
||||
"component": "@theme/DocItem",
|
||||
"exact": true,
|
||||
|
@ -170,14 +162,6 @@ Array [
|
|||
},
|
||||
"path": "/docs/1.0.0/foo/baz",
|
||||
},
|
||||
Object {
|
||||
"component": "@theme/DocItem",
|
||||
"exact": true,
|
||||
"modules": Object {
|
||||
"content": "@site/versioned_docs/version-1.0.0/hello.md",
|
||||
},
|
||||
"path": "/docs/1.0.0/hello",
|
||||
},
|
||||
],
|
||||
},
|
||||
Object {
|
||||
|
@ -196,14 +180,6 @@ Array [
|
|||
},
|
||||
"path": "/docs/next/foo/barSlug",
|
||||
},
|
||||
Object {
|
||||
"component": "@theme/DocItem",
|
||||
"exact": true,
|
||||
"modules": Object {
|
||||
"content": "@site/docs/hello.md",
|
||||
},
|
||||
"path": "/docs/next/hello",
|
||||
},
|
||||
],
|
||||
},
|
||||
Object {
|
||||
|
@ -222,14 +198,6 @@ Array [
|
|||
},
|
||||
"path": "/docs/foo/bar",
|
||||
},
|
||||
Object {
|
||||
"component": "@theme/DocItem",
|
||||
"exact": true,
|
||||
"modules": Object {
|
||||
"content": "@site/versioned_docs/version-1.0.1/hello.md",
|
||||
},
|
||||
"path": "/docs/hello",
|
||||
},
|
||||
],
|
||||
},
|
||||
]
|
||||
|
@ -254,7 +222,7 @@ Object {
|
|||
"collapsed": true,
|
||||
"items": Array [
|
||||
Object {
|
||||
"href": "/docs/next/hello",
|
||||
"href": "/docs/next",
|
||||
"label": "hello",
|
||||
"type": "link",
|
||||
},
|
||||
|
@ -285,7 +253,7 @@ Object {
|
|||
"collapsed": true,
|
||||
"items": Array [
|
||||
Object {
|
||||
"href": "/docs/1.0.0/hello",
|
||||
"href": "/docs/1.0.0",
|
||||
"label": "hello",
|
||||
"type": "link",
|
||||
},
|
||||
|
@ -311,7 +279,7 @@ Object {
|
|||
"collapsed": true,
|
||||
"items": Array [
|
||||
Object {
|
||||
"href": "/docs/hello",
|
||||
"href": "/docs",
|
||||
"label": "hello",
|
||||
"type": "link",
|
||||
},
|
||||
|
@ -348,7 +316,7 @@ Object {
|
|||
"collapsed": true,
|
||||
"items": Array [
|
||||
Object {
|
||||
"href": "/docs/1.0.0/hello",
|
||||
"href": "/docs/1.0.0",
|
||||
"label": "hello",
|
||||
"type": "link",
|
||||
},
|
||||
|
@ -387,7 +355,7 @@ Object {
|
|||
"collapsed": true,
|
||||
"items": Array [
|
||||
Object {
|
||||
"href": "/docs/hello",
|
||||
"href": "/docs",
|
||||
"label": "hello",
|
||||
"type": "link",
|
||||
},
|
||||
|
@ -425,7 +393,7 @@ Object {
|
|||
"collapsed": true,
|
||||
"items": Array [
|
||||
Object {
|
||||
"href": "/docs/next/hello",
|
||||
"href": "/docs/next",
|
||||
"label": "hello",
|
||||
"type": "link",
|
||||
},
|
||||
|
|
|
@ -70,8 +70,6 @@ export default function pluginContentDocs(
|
|||
opts: Partial<PluginOptions>,
|
||||
): Plugin<LoadedContent | null> {
|
||||
const options = {...DEFAULT_OPTIONS, ...opts};
|
||||
const homePageDocsRoutePath =
|
||||
options.routeBasePath === '' ? '/' : options.routeBasePath;
|
||||
|
||||
if (options.admonitions) {
|
||||
options.remarkPlugins = options.remarkPlugins.concat([
|
||||
|
@ -98,6 +96,24 @@ export default function pluginContentDocs(
|
|||
} = versioning;
|
||||
const versionsNames = versions.map((version) => `version-${version}`);
|
||||
|
||||
// Docs home page.
|
||||
const homePageDocsRoutePath =
|
||||
options.routeBasePath === '' ? '/' : options.routeBasePath;
|
||||
const isDocsHomePagePath = (permalink: string) => {
|
||||
const documentIdMatch = new RegExp(
|
||||
`^\/(?:${homePageDocsRoutePath}\/)?(?:(?:${versions.join(
|
||||
'|',
|
||||
)}|next)\/)?(.*)`,
|
||||
'i',
|
||||
).exec(permalink);
|
||||
|
||||
if (documentIdMatch) {
|
||||
return documentIdMatch[1] === options.homePageId;
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
return {
|
||||
name: 'docusaurus-plugin-content-docs',
|
||||
|
||||
|
@ -268,10 +284,14 @@ export default function pluginContentDocs(
|
|||
);
|
||||
}
|
||||
|
||||
const {title, permalink, sidebar_label} = linkMetadata;
|
||||
|
||||
return {
|
||||
type: 'link',
|
||||
label: linkMetadata.sidebar_label || linkMetadata.title,
|
||||
href: linkMetadata.permalink,
|
||||
label: sidebar_label || title,
|
||||
href: isDocsHomePagePath(permalink)
|
||||
? permalink.replace(`/${options.homePageId}`, '')
|
||||
: permalink,
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -361,7 +381,6 @@ export default function pluginContentDocs(
|
|||
baseUrl,
|
||||
homePageDocsRoutePath,
|
||||
versionDocsPathPrefix,
|
||||
options.homePageId,
|
||||
]);
|
||||
const docsBaseMetadataPath = await createData(
|
||||
`${docuHash(metadataItem.source)}-base.json`,
|
||||
|
@ -404,12 +423,9 @@ export default function pluginContentDocs(
|
|||
|
||||
return (
|
||||
routes
|
||||
// Do not create a route for a page created specifically for docs home page.
|
||||
.filter(
|
||||
({path}) =>
|
||||
path.substr(path.lastIndexOf('/') + 1) !==
|
||||
REVERSED_DOCS_HOME_PAGE_ID,
|
||||
)
|
||||
// Do not create a route for a document serve as docs home page.
|
||||
// TODO: need way to do this filtering when generating routes for better perf.
|
||||
.filter(({path}) => !isDocsHomePagePath(path))
|
||||
.sort((a, b) => (a.path > b.path ? 1 : b.path > a.path ? -1 : 0))
|
||||
);
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue