diff --git a/src/node/config.ts b/src/node/config.ts index ee0e2e948738..d4a76de6f079 100644 --- a/src/node/config.ts +++ b/src/node/config.ts @@ -104,7 +104,8 @@ export async function resolveConfig( const { pages, dynamicRoutes, rewrites } = await resolvePages( srcDir, - userConfig + userConfig, + logger ) const config: SiteConfig = { diff --git a/src/node/plugin.ts b/src/node/plugin.ts index c079dad60b6f..0c3daddc36e5 100644 --- a/src/node/plugin.ts +++ b/src/node/plugin.ts @@ -268,7 +268,11 @@ export async function createVitePressPlugin( if (file.endsWith('.md')) { Object.assign( siteConfig, - await resolvePages(siteConfig.srcDir, siteConfig.userConfig) + await resolvePages( + siteConfig.srcDir, + siteConfig.userConfig, + siteConfig.logger + ) ) } diff --git a/src/node/plugins/dynamicRoutesPlugin.ts b/src/node/plugins/dynamicRoutesPlugin.ts index e42e8c13e960..cf9576ae8492 100644 --- a/src/node/plugins/dynamicRoutesPlugin.ts +++ b/src/node/plugins/dynamicRoutesPlugin.ts @@ -1,6 +1,7 @@ import { loadConfigFromFile, normalizePath, + type Logger, type Plugin, type ViteDevServer } from 'vite' @@ -13,7 +14,11 @@ import { resolveRewrites } from './rewritesPlugin' export const dynamicRouteRE = /\[(\w+?)\]/g -export async function resolvePages(srcDir: string, userConfig: UserConfig) { +export async function resolvePages( + srcDir: string, + userConfig: UserConfig, + logger: Logger +) { // Important: fast-glob doesn't guarantee order of the returned files. // We must sort the pages so the input list to rollup is stable across // builds - otherwise different input order could result in different exports @@ -39,7 +44,11 @@ export async function resolvePages(srcDir: string, userConfig: UserConfig) { ;(dynamicRouteRE.test(file) ? dynamicRouteFiles : pages).push(file) }) - const dynamicRoutes = await resolveDynamicRoutes(srcDir, dynamicRouteFiles) + const dynamicRoutes = await resolveDynamicRoutes( + srcDir, + dynamicRouteFiles, + logger + ) pages.push(...dynamicRoutes.routes.map((r) => r.path)) const rewrites = resolveRewrites(pages, userConfig.rewrites) @@ -141,7 +150,7 @@ export const dynamicRoutesPlugin = async ( if (!/\.md$/.test(ctx.file)) { Object.assign( config, - await resolvePages(config.srcDir, config.userConfig) + await resolvePages(config.srcDir, config.userConfig, config.logger) ) } for (const id of mods) { @@ -154,7 +163,8 @@ export const dynamicRoutesPlugin = async ( export async function resolveDynamicRoutes( srcDir: string, - routes: string[] + routes: string[], + logger: Logger ): Promise { const pendingResolveRoutes: Promise[] = [] const routeFileToModulesMap: Record> = {} @@ -170,7 +180,7 @@ export async function resolveDynamicRoutes( const pathsFile = paths.find((p) => fs.existsSync(p)) if (pathsFile == null) { - console.warn( + logger.warn( c.yellow( `Missing paths file for dynamic route ${route}: ` + `a corresponding ${paths[0]} (or .ts/.mjs/.mts) file is needed.` @@ -183,15 +193,15 @@ export async function resolveDynamicRoutes( let mod = routeModuleCache.get(pathsFile) if (!mod) { try { - mod = (await loadConfigFromFile({} as any, pathsFile)) as RouteModule + mod = (await loadConfigFromFile( + {} as any, + pathsFile, + undefined, + 'silent' + )) as RouteModule routeModuleCache.set(pathsFile, mod) - } catch (e) { - console.warn( - c.yellow( - `Invalid paths file export in ${pathsFile}. ` + - `Expects default export of an object with a "paths" property.` - ) - ) + } catch (e: any) { + logger.warn(`${c.yellow(`Failed to load ${pathsFile}:`)}\n${e.stack}`) continue } } @@ -210,7 +220,7 @@ export async function resolveDynamicRoutes( const loader = mod!.config.paths if (!loader) { - console.warn( + logger.warn( c.yellow( `Invalid paths file export in ${pathsFile}. ` + `Missing "paths" property from default export.`