website/scripts/getDocsFromDir.js (30 lines of code) (raw):

const fs = require('fs'); const path = require('path'); const glob = require('glob'); const matter = require('gray-matter'); module.exports = function getDocsFromDir(dir) { // docs/ const baseDir = path.join(__dirname, '../docs/'); const docsDir = path.join(baseDir, dir); function getMarkdownOrder(filepath) { return (matter(fs.readFileSync(filepath, 'utf-8')).data || {}).order || 100; } function isDocHide(filepath) { return (matter(fs.readFileSync(filepath, 'utf-8')).data || {}).hide || false; } const docs = glob.sync('*.md', { cwd: docsDir, // ignore: 'README.md', }); const result = docs .map((doc) => path.join(docsDir, doc)) .filter((doc) => !isDocHide(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(/\.md/, ''); return id; }); return result; };