diff --git a/packages/vite/src/node/__tests_dts__/config.ts b/packages/vite/src/node/__tests_dts__/config.ts index a6a6498d3ef304..f3fbe24e4588be 100644 --- a/packages/vite/src/node/__tests_dts__/config.ts +++ b/packages/vite/src/node/__tests_dts__/config.ts @@ -37,6 +37,28 @@ defineConfig({ unknownProperty: 1, }) +defineConfig(() => ({ + base: '', + build: { + minify: 'oxc', + }, +})) + +defineConfig(async () => ({ + base: '', + build: { + minify: 'terser', + }, +})) + +// @ts-expect-error --- nested invalid option `build.unknown` should error +defineConfig(async () => ({ + base: '', + build: { + unknown: 1, + }, +})) + mergeConfig(defineConfig({}), defineConfig({})) mergeConfig( // @ts-expect-error diff --git a/packages/vite/src/node/config.ts b/packages/vite/src/node/config.ts index d45c6372f7d77b..72f01d49443e34 100644 --- a/packages/vite/src/node/config.ts +++ b/packages/vite/src/node/config.ts @@ -172,11 +172,15 @@ export type UserConfigExport = * accepts a direct {@link UserConfig} object, or a function that returns it. * The function receives a {@link ConfigEnv} object. */ +export function defineConfig( + config: T & UserConfigFn, +): T extends UserConfigFnObject + ? UserConfigFnObject + : T extends UserConfigFnPromise + ? UserConfigFnPromise + : UserConfigFn export function defineConfig(config: UserConfig): UserConfig export function defineConfig(config: Promise): Promise -export function defineConfig(config: UserConfigFnObject): UserConfigFnObject -export function defineConfig(config: UserConfigFnPromise): UserConfigFnPromise -export function defineConfig(config: UserConfigFn): UserConfigFn export function defineConfig(config: UserConfigExport): UserConfigExport export function defineConfig(config: UserConfigExport): UserConfigExport { return config diff --git a/playground/proxy-bypass/vite.config.js b/playground/proxy-bypass/vite.config.js index 2b190df0ff8250..202b32811b1b39 100644 --- a/playground/proxy-bypass/vite.config.js +++ b/playground/proxy-bypass/vite.config.js @@ -9,7 +9,7 @@ export default defineConfig({ '/nonExistentApp': { target: 'http://localhost:9607', bypass: () => { - return false + return /** @type {false} */ (false) }, }, '/proxyError': {