docs: integrate TypeDocs into vuepress output

# What's changed?

* create sidebar from typedoc output
* use plugin markdown to generate typedoc as markdown
This commit is contained in:
bcakmakoglu
2022-06-13 00:48:48 +02:00
committed by Braks
parent 669f9a075c
commit be5df65cc2
5 changed files with 84 additions and 6 deletions
+1 -2
View File
@@ -6,7 +6,6 @@ export function copyVueFlowPlugin(): Plugin {
return {
name: 'copy-vue-flow',
generateBundle() {
console.log('building')
const filePath = resolve(
__dirname,
'../../node_modules/@braks/vue-flow/dist/vue-flow.es.js'
@@ -14,7 +13,7 @@ export function copyVueFlowPlugin(): Plugin {
if (!existsSync(filePath)) {
throw new Error(
`@braks/vue-flow/dist/vue-flow.es.js not built. ` +
`Run "pnpm build" first.`
`Run "pnpm -w build" first.`
)
}
this.emitFile({
+34 -2
View File
@@ -1,10 +1,37 @@
import { resolve } from 'path'
import { defaultTheme, Theme } from 'vuepress'
import { defaultTheme, SidebarConfigArray, Theme } from 'vuepress'
import { path } from '@vuepress/utils'
import { useVueFlow } from '@braks/vue-flow'
import { readdirSync } from 'fs'
const { vueFlowVersion } = useVueFlow()
const typedocSidebarEntries = (): SidebarConfigArray => {
const filePath = resolve(
__dirname,
'../../typedocs'
)
const classes = readdirSync(`${filePath}/classes/`).map(entry => `/typedocs/classes/${entry}`)
const enums = readdirSync(`${filePath}/enums/`).map(entry => `/typedocs/enums/${entry}`)
const interfaces = readdirSync(`${filePath}/interfaces/`).map(entry => `/typedocs/interfaces/${entry}`)
const modules = readdirSync(`${filePath}/modules/`).map(entry => `/typedocs/modules/${entry}`)
return [
{
text: 'TypeDocs',
link: '/typedocs/',
children: [
{ text: 'Exports', children: ['/typedocs/modules.md'] },
{ text: 'Modules', children: modules },
{ text: 'Classes', children: classes },
{ text: 'Enums', children: enums },
{ text: 'Interfaces', children: interfaces },
],
}
]
}
export default {
name: 'vuepress-theme-local',
extends: defaultTheme({
@@ -61,6 +88,7 @@ export default {
],
},
],
'/typedocs/': typedocSidebarEntries(),
},
navbar: [
{ text: `v${vueFlowVersion.value}`, link: '' },
@@ -70,7 +98,11 @@ export default {
link: '/examples/',
activeMatch: '^/examples/',
},
{ text: 'TypeDocs', link: 'https://types.vueflow.dev/' },
{
text: 'TypeDocs',
link: '/typedocs/',
activeMatch: '^/typedocs/',
},
],
}),
layouts: {