From 8ea776addc2c3bcabf3c707a9a81d6e0080a8fcb Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Mon, 6 Jan 2025 23:38:13 +0530 Subject: [PATCH] fix: respect vite.clearScreen in build - rename router.onAfterRouteChanged to router.onAfterRouteChange to align with naming conventions - always pass normalized href to router.onAfterRouteChanged closes #4468 --- docs/en/reference/runtime-api.md | 2 +- docs/es/reference/runtime-api.md | 2 +- docs/fa/reference/runtime-api.md | 2 +- docs/ko/reference/runtime-api.md | 2 +- docs/pt/reference/runtime-api.md | 2 +- docs/ru/reference/runtime-api.md | 2 +- docs/zh/reference/runtime-api.md | 2 +- src/client/app/router.ts | 18 +++++++++--------- src/node/build/build.ts | 12 ++++++++++-- src/node/cli.ts | 12 ++++++++---- 10 files changed, 34 insertions(+), 22 deletions(-) diff --git a/docs/en/reference/runtime-api.md b/docs/en/reference/runtime-api.md index 5f7b5f80..d55165f5 100644 --- a/docs/en/reference/runtime-api.md +++ b/docs/en/reference/runtime-api.md @@ -114,7 +114,7 @@ interface Router { /** * Called after the route changes. */ - onAfterRouteChanged?: (to: string) => Awaitable + onAfterRouteChange?: (to: string) => Awaitable } ``` diff --git a/docs/es/reference/runtime-api.md b/docs/es/reference/runtime-api.md index 21fec5a9..1446df4c 100644 --- a/docs/es/reference/runtime-api.md +++ b/docs/es/reference/runtime-api.md @@ -106,7 +106,7 @@ interface Router { /** * Llamado después del cambio de ruta. */ - onAfterRouteChanged?: (to: string) => Awaitable + onAfterRouteChange?: (to: string) => Awaitable } ``` diff --git a/docs/fa/reference/runtime-api.md b/docs/fa/reference/runtime-api.md index 74f1bcd6..31059ef1 100644 --- a/docs/fa/reference/runtime-api.md +++ b/docs/fa/reference/runtime-api.md @@ -109,7 +109,7 @@ interface Router { /** * پس از تغییر مسیر فراخوانی می‌شود. */ - onAfterRouteChanged?: (to: string) => Awaitable + onAfterRouteChange?: (to: string) => Awaitable } ``` diff --git a/docs/ko/reference/runtime-api.md b/docs/ko/reference/runtime-api.md index a483ea2f..e9a8e530 100644 --- a/docs/ko/reference/runtime-api.md +++ b/docs/ko/reference/runtime-api.md @@ -110,7 +110,7 @@ interface Router { /** * 라우트가 변경된 후 호출. */ - onAfterRouteChanged?: (to: string) => Awaitable + onAfterRouteChange?: (to: string) => Awaitable } ``` diff --git a/docs/pt/reference/runtime-api.md b/docs/pt/reference/runtime-api.md index a04458a1..ed6476ac 100644 --- a/docs/pt/reference/runtime-api.md +++ b/docs/pt/reference/runtime-api.md @@ -106,7 +106,7 @@ interface Router { /** * Chamado após a mudança de rota. */ - onAfterRouteChanged?: (to: string) => Awaitable + onAfterRouteChange?: (to: string) => Awaitable } ``` diff --git a/docs/ru/reference/runtime-api.md b/docs/ru/reference/runtime-api.md index 5d21d29a..f1bfe6d8 100644 --- a/docs/ru/reference/runtime-api.md +++ b/docs/ru/reference/runtime-api.md @@ -106,7 +106,7 @@ interface Router { /** * Вызывается после изменения маршрута. */ - onAfterRouteChanged?: (to: string) => Awaitable + onAfterRouteChange?: (to: string) => Awaitable } ``` diff --git a/docs/zh/reference/runtime-api.md b/docs/zh/reference/runtime-api.md index 105906da..35a57872 100644 --- a/docs/zh/reference/runtime-api.md +++ b/docs/zh/reference/runtime-api.md @@ -109,7 +109,7 @@ interface Router { /** * 在路由更改后调用 */ - onAfterRouteChanged?: (to: string) => Awaitable + onAfterRouteChange?: (to: string) => Awaitable } ``` diff --git a/src/client/app/router.ts b/src/client/app/router.ts index 3c6fb4f7..0cffc700 100644 --- a/src/client/app/router.ts +++ b/src/client/app/router.ts @@ -36,6 +36,10 @@ export interface Router { /** * Called after the route changes. */ + onAfterRouteChange?: (to: string) => Awaitable + /** + * @deprecated use `onAfterRouteChange` instead + */ onAfterRouteChanged?: (to: string) => Awaitable } @@ -76,7 +80,7 @@ export function createRouter( history.pushState({}, '', href) } await loadPage(href) - await router.onAfterRouteChanged?.(href) + await (router.onAfterRouteChange ?? router.onAfterRouteChanged)?.(href) } let latestPendingPath: string | null = null @@ -245,14 +249,10 @@ export function createRouter( ) window.addEventListener('popstate', async (e) => { - if (e.state === null) { - return - } - await loadPage( - normalizeHref(location.href), - (e.state && e.state.scrollPosition) || 0 - ) - router.onAfterRouteChanged?.(location.href) + if (e.state === null) return + const href = normalizeHref(location.href) + await loadPage(href, (e.state && e.state.scrollPosition) || 0) + await (router.onAfterRouteChange ?? router.onAfterRouteChanged)?.(href) }) window.addEventListener('hashchange', (e) => { diff --git a/src/node/build/build.ts b/src/node/build/build.ts index 20849995..a0a12610 100644 --- a/src/node/build/build.ts +++ b/src/node/build/build.ts @@ -10,7 +10,7 @@ import { rimraf } from 'rimraf' import type { BuildOptions, Rollup } from 'vite' import { resolveConfig, type SiteConfig } from '../config' import { clearCache } from '../markdownToVue' -import { slash, type HeadConfig } from '../shared' +import { slash, type Awaitable, type HeadConfig } from '../shared' import { deserializeFunctions, serializeFunctions } from '../utils/fnSerialize' import { task } from '../utils/task' import { bundle } from './bundle' @@ -21,12 +21,20 @@ const require = createRequire(import.meta.url) export async function build( root?: string, - buildOptions: BuildOptions & { base?: string; mpa?: string } = {} + buildOptions: BuildOptions & { + base?: string + mpa?: string + onAfterConfigResolve?: (siteConfig: SiteConfig) => Awaitable + } = {} ) { const start = Date.now() process.env.NODE_ENV = 'production' const siteConfig = await resolveConfig(root, 'build', 'production') + + await buildOptions.onAfterConfigResolve?.(siteConfig) + delete buildOptions.onAfterConfigResolve + const unlinkVue = linkVue() if (buildOptions.base) { diff --git a/src/node/cli.ts b/src/node/cli.ts index 6b7f977c..5e0be858 100644 --- a/src/node/cli.ts +++ b/src/node/cli.ts @@ -1,6 +1,6 @@ import minimist from 'minimist' import c from 'picocolors' -import { createLogger } from 'vite' +import { createLogger, type Logger } from 'vite' import { build, createServer, serve } from '.' import { version } from '../../package.json' import { init } from './init/init' @@ -12,7 +12,7 @@ if (process.env.DEBUG) { const argv: any = minimist(process.argv.slice(2)) -const logVersion = (logger = createLogger()) => { +const logVersion = (logger: Logger) => { logger.info(`\n ${c.green(`${c.bold('vitepress')} v${version}`)}\n`, { clear: !logger.hasWarned }) @@ -60,9 +60,13 @@ if (!command || command === 'dev') { createLogger().info('', { clear: true }) init(argv.root) } else { - logVersion() if (command === 'build') { - build(root, argv).catch((err) => { + build(root, { + ...argv, + onAfterConfigResolve(siteConfig) { + logVersion(siteConfig.logger) + } + }).catch((err) => { createLogger().error( `${c.red(`build error:`)}\n${err.message}\n${err.stack}` )