fix: hmr not updating page data in rewritten paths and file path is wrong in mdit for dynamic routes

closes #4172
pull/4177/head
Divyansh Singh 4 weeks ago
parent e6f9dd33c7
commit c46e4b784d

@ -57,21 +57,33 @@ export async function createMarkdownToVueRenderFn(
base, base,
siteConfig?.logger siteConfig?.logger
) )
pages = pages.map((p) => slash(p.replace(/\.md$/, ''))) pages = pages.map((p) => slash(p.replace(/\.md$/, '')))
const dynamicRoutes = new Map(
siteConfig?.dynamicRoutes?.routes.map((r) => [
r.fullPath,
path.join(srcDir, r.route)
]) || []
)
const rewrites = new Map(
Object.entries(siteConfig?.rewrites.map || {}).map(([key, value]) => [
path.join(srcDir, key),
path.join(srcDir, value!)
]) || []
)
return async ( return async (
src: string, src: string,
file: string, file: string,
publicDir: string publicDir: string
): Promise<MarkdownCompileResult> => { ): Promise<MarkdownCompileResult> => {
const fileOrig = file const fileOrig = dynamicRoutes.get(file) || file
const alias = file = rewrites.get(file) || file
siteConfig?.rewrites.map[file] || // virtual dynamic path file
siteConfig?.rewrites.map[file.slice(srcDir.length + 1)]
file = alias ? path.join(srcDir, alias) : file
const relativePath = slash(path.relative(srcDir, file)) const relativePath = slash(path.relative(srcDir, file))
const cacheKey = JSON.stringify({ src, file: fileOrig })
const cacheKey = JSON.stringify({ src, file: relativePath })
if (isBuild || options.cache !== false) { if (isBuild || options.cache !== false) {
const cached = cache.get(cacheKey) const cached = cache.get(cacheKey)
if (cached) { if (cached) {

@ -402,8 +402,9 @@ export async function createVitePressPlugin(
config.publicDir config.publicDir
) )
const relativePath = slash(path.relative(srcDir, file))
const payload: PageDataPayload = { const payload: PageDataPayload = {
path: `/${slash(path.relative(srcDir, file))}`, path: `/${siteConfig.rewrites.map[relativePath] || relativePath}`,
pageData pageData
} }

Loading…
Cancel
Save