mirror of
https://github.com/facebook/docusaurus.git
synced 2025-07-24 03:58:49 +02:00
refactor(mdx-loader): re-export metadata module instead of serializing it (#10470)
This commit is contained in:
parent
3d69ff3d47
commit
a47e8dda2d
6 changed files with 33 additions and 145 deletions
|
@ -1,33 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
import type {LoadedContent, Metadata} from '@docusaurus/plugin-content-pages';
|
||||
|
||||
function indexPagesBySource(content: LoadedContent): Map<string, Metadata> {
|
||||
return new Map(content.map((page) => [page.source, page]));
|
||||
}
|
||||
|
||||
// TODO this is bad, we should have a better way to do this (new lifecycle?)
|
||||
// The source to page/permalink is a mutable map passed to the mdx loader
|
||||
// See https://github.com/facebook/docusaurus/pull/10457
|
||||
// See https://github.com/facebook/docusaurus/pull/10185
|
||||
export function createContentHelpers() {
|
||||
const sourceToPage = new Map<string, Metadata>();
|
||||
// const sourceToPermalink = new Map<string, string>();
|
||||
|
||||
// Mutable map update :/
|
||||
function updateContent(content: LoadedContent): void {
|
||||
sourceToPage.clear();
|
||||
// sourceToPermalink.clear();
|
||||
indexPagesBySource(content).forEach((value, key) => {
|
||||
sourceToPage.set(key, value);
|
||||
// sourceToPermalink.set(key, value.metadata.permalink);
|
||||
});
|
||||
}
|
||||
|
||||
return {updateContent, sourceToPage};
|
||||
}
|
|
@ -24,7 +24,6 @@ import {
|
|||
getContentPathList,
|
||||
loadPagesContent,
|
||||
} from './content';
|
||||
import {createContentHelpers} from './contentHelpers';
|
||||
import type {LoadContext, Plugin} from '@docusaurus/types';
|
||||
import type {
|
||||
PluginOptions,
|
||||
|
@ -47,8 +46,6 @@ export default async function pluginContentPages(
|
|||
);
|
||||
const dataDir = path.join(pluginDataDirRoot, options.id ?? DEFAULT_PLUGIN_ID);
|
||||
|
||||
const contentHelpers = createContentHelpers();
|
||||
|
||||
async function createPagesMDXLoaderRule(): Promise<RuleSetRule> {
|
||||
const {
|
||||
admonitions,
|
||||
|
@ -76,18 +73,9 @@ export default async function pluginContentPages(
|
|||
// Note that metadataPath must be the same/in-sync as
|
||||
// the path from createData for each MDX.
|
||||
const aliasedSource = aliasedSitePath(mdxPath, siteDir);
|
||||
const metadataPath = path.join(
|
||||
dataDir,
|
||||
`${docuHash(aliasedSource)}.json`,
|
||||
);
|
||||
const metadataContent = contentHelpers.sourceToPage.get(aliasedSource);
|
||||
return {
|
||||
metadataPath,
|
||||
metadataContent,
|
||||
};
|
||||
return path.join(dataDir, `${docuHash(aliasedSource)}.json`);
|
||||
},
|
||||
// Assets allow to convert some relative images paths to
|
||||
// require(...) calls
|
||||
// createAssets converts relative paths to require() calls
|
||||
createAssets: ({frontMatter}: {frontMatter: PageFrontMatter}) => ({
|
||||
image: frontMatter.image,
|
||||
}),
|
||||
|
@ -125,7 +113,6 @@ export default async function pluginContentPages(
|
|||
if (!content) {
|
||||
return;
|
||||
}
|
||||
contentHelpers.updateContent(content);
|
||||
await createAllRoutes({content, options, actions});
|
||||
},
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue