fix(schema): resolve user-provided serverDir relative to root (#28700)

This commit is contained in:
Julien Huang 2024-08-26 15:14:24 +02:00 committed by Daniel Roe
parent 3a57295295
commit 2d85d6a978
No known key found for this signature in database
GPG Key ID: CBC814C393D93268

View File

@ -1,7 +1,7 @@
import { existsSync } from 'node:fs'
import { readdir } from 'node:fs/promises'
import { defineUntypedSchema } from 'untyped'
import { basename, relative, resolve } from 'pathe'
import { basename, join, relative, resolve } from 'pathe'
import { isDebug, isDevelopment, isTest } from 'std-env'
import { defu } from 'defu'
import { findWorkspaceDir } from 'pkg-types'
@ -156,9 +156,12 @@ export default defineUntypedSchema({
*/
serverDir: {
$resolve: async (val: string | undefined, get): Promise<string> => {
const isV4 = ((await get('future') as Record<string, unknown>).compatibilityVersion === 4)
return resolve(isV4 ? await get('rootDir') as string : await get('srcDir') as string, val ?? 'server')
if (val) {
const rootDir = await get('rootDir') as string
return resolve(rootDir, val)
}
const isV4 = (await get('future') as Record<string, unknown>).compatibilityVersion === 4
return join(isV4 ? await get('rootDir') as string : await get('srcDir') as string, 'server')
},
},