From 19538283c8d540a02c0aa67a577e862d6e1f2835 Mon Sep 17 00:00:00 2001 From: userquin Date: Fri, 3 Jun 2022 16:59:12 +0200 Subject: [PATCH] feat: provide build end hook --- src/node/build/build.ts | 2 ++ src/node/config.ts | 11 +++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/node/build/build.ts b/src/node/build/build.ts index 91c08742316e..2eed3e0dcf30 100644 --- a/src/node/build/build.ts +++ b/src/node/build/build.ts @@ -80,5 +80,7 @@ export async function build( await fs.remove(siteConfig.tempDir) } + await siteConfig.buildEnd?.(siteConfig) + console.log(`build complete in ${((Date.now() - start) / 1000).toFixed(2)}s.`) } diff --git a/src/node/config.ts b/src/node/config.ts index c9bf2a142292..526256af567b 100644 --- a/src/node/config.ts +++ b/src/node/config.ts @@ -64,6 +64,12 @@ export interface UserConfig { * @experimental */ mpa?: boolean + + /** + * Build end hook: called when SSG finish. + * @param siteConfig The resolved configuration. + */ + buildEnd?: (siteConfig: SiteConfig) => Promise } export type RawConfigExports = @@ -74,7 +80,7 @@ export type RawConfigExports = export interface SiteConfig extends Pick< UserConfig, - 'markdown' | 'vue' | 'vite' | 'shouldPreload' | 'mpa' | 'lastUpdated' + 'markdown' | 'vue' | 'vite' | 'shouldPreload' | 'mpa' | 'lastUpdated' | 'buildEnd' > { root: string srcDir: string @@ -152,7 +158,8 @@ export async function resolveConfig( vue: userConfig.vue, vite: userConfig.vite, shouldPreload: userConfig.shouldPreload, - mpa: !!userConfig.mpa + mpa: !!userConfig.mpa, + buildEnd: userConfig.buildEnd } return config