From 8bbf1611020aa7379bdd413c6fc2d0bb2c9fd40e Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Tue, 25 Jul 2023 00:37:01 +0800 Subject: [PATCH 1/2] fix: port the latest `defineConfig` type from vite Ported from https://github.com/vitejs/vite/pull/13792 Fully fixes issues like https://github.com/vuejs/create-vue/issues/317 and https://github.com/vuejs/create-vue/issues/313 For an easy reproduction, please refer to https://github.com/sodatea/viteste-define-config-bug-repro I didn't include a test in this PR because: 1. The reproduction is a bit complicated, it only fails on the very latest Vite versions, but updating Vite would mess up the lockfile. 2. By not updating the dependencies, we can make sure that this fix is compatible with older versions of Vite, too. --- packages/vitest/src/config.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/vitest/src/config.ts b/packages/vitest/src/config.ts index 0afb83cccd86..4cc3e7522267 100644 --- a/packages/vitest/src/config.ts +++ b/packages/vitest/src/config.ts @@ -10,13 +10,18 @@ export { configDefaults, defaultInclude, defaultExclude, coverageConfigDefaults export { mergeConfig } from 'vite' export type { ConfigEnv, ViteUserConfig as UserConfig } +export type UserConfigFnObject = (env: ConfigEnv) => ViteUserConfig +export type UserConfigFnPromise = (env: ConfigEnv) => Promise export type UserConfigFn = (env: ConfigEnv) => ViteUserConfig | Promise -export type UserConfigExport = ViteUserConfig | Promise | UserConfigFn +export type UserConfigExport = ViteUserConfig | Promise | UserConfigFnObject | UserConfigFnPromise | UserConfigFn export type UserProjectConfigFn = (env: ConfigEnv) => UserWorkspaceConfig | Promise export type UserProjectConfigExport = UserWorkspaceConfig | Promise | UserProjectConfigFn -export function defineConfig(config: UserConfigExport) { +export function defineConfig(config: ViteUserConfig): ViteUserConfig +export function defineConfig(config: Promise): Promise +export function defineConfig(config: UserConfigExport): UserConfigExport +export function defineConfig(config: UserConfigExport): UserConfigExport { return config } From be033b3e158ce34ee5db03c4fd23db7b39e38a3c Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Thu, 27 Jul 2023 20:39:32 +0800 Subject: [PATCH 2/2] chore: apply patch from https://github.com/vitejs/vite/pull/13958 --- packages/vitest/src/config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/vitest/src/config.ts b/packages/vitest/src/config.ts index 4cc3e7522267..1fdd469cd2bf 100644 --- a/packages/vitest/src/config.ts +++ b/packages/vitest/src/config.ts @@ -20,6 +20,7 @@ export type UserProjectConfigExport = UserWorkspaceConfig | Promise): Promise +export function defineConfig(config: UserConfigFnObject): UserConfigFnObject export function defineConfig(config: UserConfigExport): UserConfigExport export function defineConfig(config: UserConfigExport): UserConfigExport { return config