fix: fix alias handle relative path incorrectly

This commit is contained in:
eritque0arcus 2025-08-20 21:03:34 -05:00
parent ebff6617bb
commit 374b6806d4
No known key found for this signature in database
GPG Key ID: B95AA12EA8C8C3AE

View File

@ -1,4 +1,4 @@
import { FullSlug, isRelativeURL, resolveRelative, simplifySlug } from "../../util/path"
import { FullSlug, resolveRelative, simplifySlug } from "../../util/path"
import { QuartzEmitterPlugin } from "../types"
import { write } from "./helpers"
import { BuildCtx } from "../../util/ctx"
@ -9,11 +9,15 @@ async function* processFile(ctx: BuildCtx, file: VFile) {
const ogSlug = simplifySlug(file.data.slug!)
for (const aliasTarget of file.data.aliases ?? []) {
const aliasTargetSlug = (
isRelativeURL(aliasTarget)
? path.normalize(path.join(ogSlug, "..", aliasTarget))
: aliasTarget
) as FullSlug
let aliasTargetSlug: FullSlug
if (aliasTarget.startsWith('/')) {
// Root-absolute paths: /index -> index
aliasTargetSlug = aliasTarget.slice(1) as FullSlug
} else {
// Everything else is relative to current directory: ./file, ../folder/file, index, xxx/yyy
aliasTargetSlug = path.posix.normalize(path.posix.join(path.posix.dirname(ogSlug), aliasTarget)) as FullSlug
}
const redirUrl = resolveRelative(aliasTargetSlug, ogSlug)
yield write({