mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2025-12-11 18:42:56 +00:00
67 lines
1.6 KiB
JavaScript
67 lines
1.6 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
const glob = require('glob');
|
|
const matter = require('gray-matter');
|
|
|
|
module.exports = function getDocsFromDir(dir, cateList) {
|
|
// docs/
|
|
const baseDir = path.join(__dirname, '../docs/');
|
|
const docsDir = path.join(baseDir, dir);
|
|
|
|
function isNil(value) {
|
|
return value === undefined || value === null;
|
|
}
|
|
|
|
function getMarkdownOrder(filepath) {
|
|
const { data } = matter(fs.readFileSync(filepath, 'utf-8'));
|
|
const { sidebar_position } = data || {};
|
|
return isNil(sidebar_position) ? 100 : sidebar_position;
|
|
}
|
|
|
|
const docs = glob.sync('*.md?(x)', {
|
|
cwd: docsDir,
|
|
// ignore: 'README.md',
|
|
});
|
|
|
|
const result = docs
|
|
.filter((doc) => !/^index.md(x)?$/.test(doc))
|
|
.map((doc) => {
|
|
return path.join(docsDir, doc);
|
|
})
|
|
.sort((a, b) => {
|
|
const orderA = getMarkdownOrder(a);
|
|
const orderB = getMarkdownOrder(b);
|
|
|
|
return orderA - orderB;
|
|
})
|
|
.map((filepath) => {
|
|
// /Users/xxx/site/docs/guide/basic/router.md => guide/basic/router
|
|
const id = path
|
|
.relative(baseDir, filepath)
|
|
.replace(/\\/g, '/')
|
|
.replace(/\.mdx?/, '');
|
|
return id;
|
|
});
|
|
|
|
(cateList || []).forEach((item) => {
|
|
const { dir, subCategory, ...otherConfig } = item;
|
|
const indexList = glob.sync('index.md?(x)', {
|
|
cwd: path.join(baseDir, dir),
|
|
});
|
|
if (indexList.length > 0) {
|
|
otherConfig.link = {
|
|
type: 'doc',
|
|
id: `${dir}/index`,
|
|
};
|
|
}
|
|
result.push({
|
|
type: 'category',
|
|
collapsed: false,
|
|
...otherConfig,
|
|
items: getDocsFromDir(dir, subCategory),
|
|
});
|
|
});
|
|
|
|
return result;
|
|
};
|