From 2c8aae6a4a44304cc24519ee322cd2f04fd13123 Mon Sep 17 00:00:00 2001 From: Vishnu Vardhan P Date: Tue, 24 Feb 2026 15:47:09 +0530 Subject: [PATCH 1/2] fix(types): improve defineConfig callback inference --- .../vite/src/node/__tests_dts__/config.ts | 22 +++++++++++++++++++ packages/vite/src/node/config.ts | 10 ++++++--- 2 files changed, 29 insertions(+), 3 deletions(-) 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 From c8eceeebf125e8dc44ee99e50fa4cba3acc6e6ed Mon Sep 17 00:00:00 2001 From: Vishnu Vardhan P Date: Tue, 24 Feb 2026 16:07:03 +0530 Subject: [PATCH 2/2] test(playground): preserve false literal in proxy bypass --- playground/proxy-bypass/vite.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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': {