mirror of
https://github.com/pengzhanbo/vuepress-theme-plume.git
synced 2026-04-23 10:58:13 +08:00
30 lines
1.1 KiB
TypeScript
30 lines
1.1 KiB
TypeScript
import type { App, Page, Theme } from '@vuepress/core'
|
|
import { getDirname, path } from '@vuepress/utils'
|
|
import type { PlumeThemeOptions, PlumeThemePageData } from '../shared/index.js'
|
|
import { mergeLocaleOptions } from './defaultOptions.js'
|
|
import { setupPlugins } from './plugins.js'
|
|
import { extendsPageData, setupPage } from './setupPages.js'
|
|
|
|
const __dirname = getDirname(import.meta.url)
|
|
const name = 'vuepress-theme-plume'
|
|
const resolve = (...args: string[]) => path.resolve(__dirname, '../', ...args)
|
|
const templates = (url: string) => resolve('../templates', url)
|
|
|
|
export function plumeTheme({
|
|
themePlugins = {},
|
|
...localeOptions
|
|
}: PlumeThemeOptions = {}): Theme {
|
|
localeOptions = mergeLocaleOptions(localeOptions)
|
|
return (app: App) => {
|
|
return {
|
|
name,
|
|
templateBuild: templates('build.html'),
|
|
clientConfigFile: resolve('client/config.js'),
|
|
plugins: setupPlugins(app, themePlugins, localeOptions),
|
|
onInitialized: async app => await setupPage(app, localeOptions),
|
|
extendsPage: (page: Page<PlumeThemePageData>) =>
|
|
extendsPageData(app, page, localeOptions),
|
|
}
|
|
}
|
|
}
|