diff --git a/src/node/build/build.ts b/src/node/build/build.ts index d8c34f3f7259..5936a61f539b 100644 --- a/src/node/build/build.ts +++ b/src/node/build/build.ts @@ -87,5 +87,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 7560020e66ad..223238c72e5b 100644 --- a/src/node/config.ts +++ b/src/node/config.ts @@ -71,6 +71,12 @@ export interface UserConfig { * @default false */ ignoreDeadLinks?: boolean + + /** + * Build end hook: called when SSG finish. + * @param siteConfig The resolved configuration. + */ + buildEnd?: (siteConfig: SiteConfig) => Promise } export type RawConfigExports = @@ -88,6 +94,7 @@ export interface SiteConfig | 'mpa' | 'lastUpdated' | 'ignoreDeadLinks' + | 'buildEnd' > { root: string srcDir: string @@ -166,7 +173,8 @@ export async function resolveConfig( vite: userConfig.vite, shouldPreload: userConfig.shouldPreload, mpa: !!userConfig.mpa, - ignoreDeadLinks: userConfig.ignoreDeadLinks + ignoreDeadLinks: userConfig.ignoreDeadLinks, + buildEnd: userConfig.buildEnd } return config