diff --git a/src/node/build/build.ts b/src/node/build/build.ts index 91c08742..2eed3e0d 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 c9bf2a14..526256af 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