feat(v2): createData plugin API (#1400)

* feat(v2): createModule plugin api

* remove unused stuff

* address review, createModule -> createData

* link.link -> link.url

* remove youtube page

* update yarn.lock
This commit is contained in:
Endilie Yacop Sucipto 2019-04-27 14:13:53 +07:00 committed by GitHub
parent 195e934858
commit b3cf9c62d5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 164 additions and 349 deletions

View file

@ -7,11 +7,9 @@
const globby = require('globby');
const path = require('path');
const {encodePath, fileToPath, idx} = require('@docusaurus/utils');
const {encodePath, fileToPath, idx, docuHash} = require('@docusaurus/utils');
const DEFAULT_OPTIONS = {
metadataKey: 'pagesMetadata',
metadataFileName: 'pagesMetadata.json',
path: 'pages', // Path to data on filesystem, relative to site dir.
routeBasePath: '', // URL Route.
include: ['**/*.{js,jsx}'], // Extensions to include.
@ -96,20 +94,26 @@ class DocusaurusPluginContentPages {
async contentLoaded({content, actions}) {
const {component} = this.options;
const {addRoute} = actions;
const {addRoute, createData} = actions;
content.forEach(metadataItem => {
const {permalink, source} = metadataItem;
addRoute({
path: permalink,
component,
exact: true,
metadata: metadataItem,
modules: {
content: source,
},
});
});
await Promise.all(
content.map(async metadataItem => {
const {permalink, source} = metadataItem;
const metadataPath = await createData(
`${docuHash(permalink)}.json`,
JSON.stringify(metadataItem, null, 2),
);
addRoute({
path: permalink,
component,
exact: true,
modules: {
content: source,
metadata: metadataPath,
},
});
}),
);
}
}