diff --git a/src/node/build/build.ts b/src/node/build/build.ts index 8267fbcc..fb09c717 100644 --- a/src/node/build/build.ts +++ b/src/node/build/build.ts @@ -88,5 +88,7 @@ export async function build( fs.rmSync(siteConfig.tempDir, { recursive: true, force: true }) } + 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 096440e5..6a81c6d0 100644 --- a/src/node/config.ts +++ b/src/node/config.ts @@ -85,6 +85,12 @@ export interface UserConfig { * @default 'disabled' */ cleanUrls?: CleanUrlsMode + + /** + * Build end hook: called when SSG finish. + * @param siteConfig The resolved configuration. + */ + buildEnd?: (siteConfig: SiteConfig) => Promise } export type RawConfigExports = @@ -103,6 +109,7 @@ export interface SiteConfig | 'lastUpdated' | 'ignoreDeadLinks' | 'cleanUrls' + | 'buildEnd' > { root: string srcDir: string @@ -182,7 +189,8 @@ export async function resolveConfig( shouldPreload: userConfig.shouldPreload, mpa: !!userConfig.mpa, ignoreDeadLinks: userConfig.ignoreDeadLinks, - cleanUrls: userConfig.cleanUrls || 'disabled' + cleanUrls: userConfig.cleanUrls || 'disabled', + buildEnd: userConfig.buildEnd } return config