fix(build): normalize rewrite drive letters (#5245)

pull/5246/head
T 2 months ago committed by GitHub
parent ddf178a170
commit 5c50b99724
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -66,4 +66,37 @@ describe('node/markdownToVue', () => {
line: 8 line: 8
}) })
}) })
test('applies rewrites with mismatched Windows drive letter case', async () => {
root = await mkdtemp(path.join(tmpdir(), 'vitepress-rewrite-'))
const file = path.join(root, 'index.md')
await writeFile(file, '# Home\n')
const siteConfig = await resolveConfig(root, 'build', 'production')
siteConfig.srcDir = 'c:/site/docs'
siteConfig.pages = ['en/index.md']
siteConfig.rewrites = {
map: { 'en/index.md': 'index.md' },
inv: { 'index.md': 'en/index.md' }
}
;(siteConfig as any).__dirty = true
const render = await createMarkdownToVueRenderFn(
siteConfig.srcDir,
{ cache: false },
'/',
false,
false,
siteConfig
)
const result = await render(
'# Home\n',
'C:/site/docs/en/index.md',
'public'
)
expect(result.pageData.relativePath).toBe('index.md')
})
}) })

@ -47,6 +47,10 @@ let __dynamicRoutes = new Map<string, [string, string]>()
let __rewrites = new Map<string, string>() let __rewrites = new Map<string, string>()
let __ts: number let __ts: number
function normalizeDriveLetter(file: string) {
return file.replace(/^[a-z]:/i, (drive) => drive.toLowerCase())
}
function getResolutionCache(siteConfig: SiteConfig) { function getResolutionCache(siteConfig: SiteConfig) {
// @ts-expect-error internal // @ts-expect-error internal
if (siteConfig.__dirty) { if (siteConfig.__dirty) {
@ -61,8 +65,8 @@ function getResolutionCache(siteConfig: SiteConfig) {
__rewrites = new Map( __rewrites = new Map(
Object.entries(siteConfig.rewrites.map).map(([key, value]) => [ Object.entries(siteConfig.rewrites.map).map(([key, value]) => [
slash(path.join(siteConfig.srcDir, key)), normalizeDriveLetter(slash(path.join(siteConfig.srcDir, key))),
slash(path.join(siteConfig.srcDir, value!)) normalizeDriveLetter(slash(path.join(siteConfig.srcDir, value!)))
]) ])
) )
@ -110,7 +114,7 @@ export async function createMarkdownToVueRenderFn(
getPageDataTransformer(dynamicRoute?.[1]!) getPageDataTransformer(dynamicRoute?.[1]!)
].filter((fn) => fn != null) ].filter((fn) => fn != null)
file = rewrites.get(file) || file file = rewrites.get(normalizeDriveLetter(file)) || file
const relativePath = slash(path.relative(srcDir, file)) const relativePath = slash(path.relative(srcDir, file))
const cacheKey = JSON.stringify({ src, ts, relativePath }) const cacheKey = JSON.stringify({ src, ts, relativePath })

Loading…
Cancel
Save