diff --git a/src/node/config.ts b/src/node/config.ts index d5af0e59..6ac2cd52 100644 --- a/src/node/config.ts +++ b/src/node/config.ts @@ -21,6 +21,7 @@ export interface UserConfig { alias?: Record markdown?: MarkdownOptions customData?: any + isCustomElement?: (tag: string) => boolean | void } export interface SiteConfig { @@ -33,6 +34,7 @@ export interface SiteConfig { alias: AliasOptions pages: string[] markdown?: MarkdownOptions + isCustomElement?: (tag: string) => boolean | void } const resolve = (root: string, file: string) => @@ -59,7 +61,8 @@ export async function resolveConfig( outDir: resolve(root, 'dist'), tempDir: path.resolve(APP_PATH, 'temp'), markdown: userConfig.markdown, - alias: resolveAliases(themeDir, userConfig) + alias: resolveAliases(themeDir, userConfig), + isCustomElement: userConfig.isCustomElement } return config diff --git a/src/node/plugin.ts b/src/node/plugin.ts index 1cebd379..11c589c0 100644 --- a/src/node/plugin.ts +++ b/src/node/plugin.ts @@ -24,14 +24,17 @@ const isPageChunk = ( export function createVitePressPlugin( root: string, - { configPath, alias, markdown, site }: SiteConfig, + { configPath, alias, markdown, site, isCustomElement }: SiteConfig, ssr = false, pageToHashMap?: Record ): Plugin[] { const markdownToVue = createMarkdownToVueRenderFn(root, markdown) const vuePlugin = createVuePlugin({ - include: [/\.vue$/, /\.md$/] + include: [/\.vue$/, /\.md$/], + template: { + compilerOptions: { isCustomElement } + } }) let siteData = site