docusaurus/lib/load/docs.js

37 lines
907 B
JavaScript

const fs = require('fs-extra');
const path = require('path');
const fm = require('front-matter');
const globby = require('globby');
const {encodePath, fileToPath} = require('./utils');
function parse(fileString) {
if (!fm.test(fileString)) {
return {metadata: null, content: fileString};
}
const {attributes: metadata, body: content} = fm(fileString);
return {metadata, content};
}
async function loadDocs(docsDir) {
const docsFiles = await globby(['**/*.md'], {
cwd: docsDir
});
const docsData = await Promise.all(
docsFiles.map(async source => {
const filepath = path.resolve(docsDir, source);
const fileString = await fs.readFile(filepath, 'utf-8');
const {metadata} = parse(fileString);
return {
path: encodePath(fileToPath(source)),
source,
...metadata
};
})
);
return docsData;
}
module.exports = loadDocs;