| 9 | import { rootDir } from '../../paths' |
| 10 | |
| 11 | export function resolveOptimizerConfig( |
| 12 | _testOptions: DepsOptimizationOptions | undefined, |
| 13 | viteOptions: DepOptimizationOptions | undefined, |
| 14 | ): DepOptimizationOptions { |
| 15 | const testOptions = _testOptions || {} |
| 16 | let optimizeDeps: DepOptimizationOptions |
| 17 | if (testOptions.enabled !== true) { |
| 18 | testOptions.enabled ??= false |
| 19 | |
| 20 | optimizeDeps = { |
| 21 | // experimental in Vite >2.9.2, entries remains to help with older versions |
| 22 | disabled: true, |
| 23 | entries: [], |
| 24 | } |
| 25 | } |
| 26 | else { |
| 27 | const currentInclude = testOptions.include || viteOptions?.include || [] |
| 28 | const exclude = [ |
| 29 | 'vitest', |
| 30 | // Ideally, we shouldn't optimize react in test mode, otherwise we need to optimize _every_ dependency that uses react. |
| 31 | 'react', |
| 32 | 'vue', |
| 33 | ...(testOptions.exclude || viteOptions?.exclude || []), |
| 34 | ] |
| 35 | const runtime = currentInclude.filter( |
| 36 | n => n.endsWith('jsx-dev-runtime') || n.endsWith('jsx-runtime'), |
| 37 | ) |
| 38 | exclude.push(...runtime) |
| 39 | |
| 40 | const include = (testOptions.include || viteOptions?.include || []).filter( |
| 41 | (n: string) => !exclude.includes(n), |
| 42 | ) |
| 43 | |
| 44 | optimizeDeps = { |
| 45 | ...viteOptions, |
| 46 | ...testOptions, |
| 47 | noDiscovery: true, |
| 48 | disabled: false, |
| 49 | entries: [], |
| 50 | exclude, |
| 51 | include, |
| 52 | } |
| 53 | } |
| 54 | |
| 55 | // `optimizeDeps.disabled` is deprecated since v5.1.0-beta.1 |
| 56 | // https://github.com/vitejs/vite/pull/15184 |
| 57 | if (optimizeDeps.disabled) { |
| 58 | optimizeDeps.noDiscovery = true |
| 59 | optimizeDeps.include = [] |
| 60 | } |
| 61 | delete optimizeDeps.disabled |
| 62 | |
| 63 | return optimizeDeps |
| 64 | } |
| 65 | |
| 66 | export function deleteDefineConfig(viteConfig: ViteConfig): Record<string, any> { |
| 67 | const defines: Record<string, any> = {} |