docs: generate typedocs sidebar dynamically from subdirectories
This commit is contained in:
@@ -2,31 +2,40 @@ import { resolve } from 'path'
|
|||||||
import { defaultTheme, SidebarConfigArray, Theme } from 'vuepress'
|
import { defaultTheme, SidebarConfigArray, Theme } from 'vuepress'
|
||||||
import { path } from '@vuepress/utils'
|
import { path } from '@vuepress/utils'
|
||||||
import { useVueFlow } from '@braks/vue-flow'
|
import { useVueFlow } from '@braks/vue-flow'
|
||||||
import { readdirSync } from 'fs'
|
import { readdirSync, statSync } from 'fs'
|
||||||
|
|
||||||
const { vueFlowVersion } = useVueFlow()
|
const { vueFlowVersion } = useVueFlow()
|
||||||
|
|
||||||
|
function capitalize(str: string) {
|
||||||
|
return str.charAt(0).toUpperCase() + str.slice(1);
|
||||||
|
}
|
||||||
|
|
||||||
const typedocSidebarEntries = (): SidebarConfigArray => {
|
const typedocSidebarEntries = (): SidebarConfigArray => {
|
||||||
const filePath = resolve(
|
const filePath = resolve(
|
||||||
__dirname,
|
__dirname,
|
||||||
'../../typedocs'
|
'../../typedocs'
|
||||||
)
|
)
|
||||||
|
|
||||||
const classes = readdirSync(`${filePath}/classes/`).map(entry => `/typedocs/classes/${entry}`)
|
const docsModules = readdirSync(filePath).filter(name => statSync(`${filePath}/${name}`).isDirectory())
|
||||||
const enums = readdirSync(`${filePath}/enums/`).map(entry => `/typedocs/enums/${entry}`)
|
|
||||||
const interfaces = readdirSync(`${filePath}/interfaces/`).map(entry => `/typedocs/interfaces/${entry}`)
|
const sidebarItems = docsModules.map(module => {
|
||||||
const modules = readdirSync(`${filePath}/modules/`).map(entry => `/typedocs/modules/${entry}`)
|
let children = readdirSync(`${filePath}/${module}/`).map(entry => `/typedocs/${module}/${entry}`)
|
||||||
|
|
||||||
|
if (module === 'variables') {
|
||||||
|
children = children.filter(child => {
|
||||||
|
return child.includes('default')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return { text: capitalize(module), children }
|
||||||
|
})
|
||||||
|
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
text: 'TypeDocs',
|
text: 'TypeDocs',
|
||||||
link: '/typedocs/',
|
link: '/typedocs/',
|
||||||
children: [
|
children: [
|
||||||
{ text: 'Exports', children: ['/typedocs/modules.md'] },
|
...sidebarItems,
|
||||||
{ text: 'Modules', children: modules },
|
|
||||||
{ text: 'Classes', children: classes },
|
|
||||||
{ text: 'Enums', children: enums },
|
|
||||||
{ text: 'Interfaces', children: interfaces },
|
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user