|
| 1 | +import { builtinModules } from 'node:module' |
| 2 | +import { version as viteVersion } from 'vite' |
1 | 3 | import type { UserConfig as ViteConfig, Plugin as VitePlugin } from 'vite' |
2 | 4 | import { relative } from 'pathe' |
3 | 5 | import { configDefaults } from '../../defaults' |
@@ -134,49 +136,32 @@ export async function VitestPlugin(options: UserConfig = {}, ctx = new Vitest('t |
134 | 136 | } |
135 | 137 |
|
136 | 138 | const optimizeConfig: Partial<ViteConfig> = {} |
137 | | - // TODO: optimizer is temporary disabled, until Vite provides "optimzier.byDefault" option |
138 | | - // const optimizer = preOptions.deps?.experimentalOptimizer |
139 | | - // if (!optimizer?.enabled) { |
140 | | - optimizeConfig.cacheDir = undefined |
141 | | - optimizeConfig.optimizeDeps = { |
142 | | - // experimental in Vite >2.9.2, entries remains to help with older versions |
143 | | - disabled: true, |
144 | | - entries: [], |
| 139 | + const optimizer = preOptions.deps?.experimentalOptimizer |
| 140 | + const [major, minor] = viteVersion.split('.').map(Number) |
| 141 | + const allowed = major >= 5 || (major === 4 && minor >= 3) |
| 142 | + if (!allowed && optimizer?.enabled === true) |
| 143 | + console.warn(`Vitest: "deps.experimentalOptimizer" is only available in Vite >= 4.3.0, current Vite version: ${viteVersion}`) |
| 144 | + if (!allowed || optimizer?.enabled !== true) { |
| 145 | + optimizeConfig.cacheDir = undefined |
| 146 | + optimizeConfig.optimizeDeps = { |
| 147 | + // experimental in Vite >2.9.2, entries remains to help with older versions |
| 148 | + disabled: true, |
| 149 | + entries: [], |
| 150 | + } |
| 151 | + } |
| 152 | + else { |
| 153 | + const cacheDir = preOptions.cache !== false ? preOptions.cache?.dir : null |
| 154 | + optimizeConfig.cacheDir = cacheDir ?? 'node_modules/.vitest' |
| 155 | + optimizeConfig.optimizeDeps = { |
| 156 | + ...viteConfig.optimizeDeps, |
| 157 | + ...optimizer, |
| 158 | + noDiscovery: true, |
| 159 | + disabled: false, |
| 160 | + entries: [], |
| 161 | + exclude: ['vitest', ...builtinModules, ...(optimizer.exclude || viteConfig.optimizeDeps?.exclude || [])], |
| 162 | + include: (optimizer.include || viteConfig.optimizeDeps?.include || []).filter((n: string) => n !== 'vitest'), |
| 163 | + } |
145 | 164 | } |
146 | | - // } |
147 | | - // else { |
148 | | - // const root = config.root || process.cwd() |
149 | | - // // TODO: add support for experimental optimizer |
150 | | - // const entries = [] |
151 | | - // // const [...entries] = await ctx.globAllTestFiles(preOptions as ResolvedConfig, preOptions.dir || root) |
152 | | - // if (preOptions?.setupFiles) { |
153 | | - // const setupFiles = toArray(preOptions.setupFiles).map((file: string) => |
154 | | - // normalize( |
155 | | - // resolveModule(file, { paths: [root] }) |
156 | | - // ?? resolve(root, file), |
157 | | - // ), |
158 | | - // ) |
159 | | - // entries.push(...setupFiles) |
160 | | - // } |
161 | | - // const cacheDir = preOptions.cache !== false ? preOptions.cache?.dir : null |
162 | | - // optimizeConfig.cacheDir = cacheDir ?? 'node_modules/.vitest' |
163 | | - // optimizeConfig.optimizeDeps = { |
164 | | - // ...viteConfig.optimizeDeps, |
165 | | - // ...optimizer, |
166 | | - // disabled: false, |
167 | | - // entries: [...(viteConfig.optimizeDeps?.entries || []), ...entries], |
168 | | - // exclude: ['vitest', ...builtinModules, ...(optimizer.exclude || viteConfig.optimizeDeps?.exclude || [])], |
169 | | - // include: (optimizer.include || viteConfig.optimizeDeps?.include || []).filter((n: string) => n !== 'vitest'), |
170 | | - // } |
171 | | - // // Vite throws an error that it cannot rename "deps_temp", but optimization still works |
172 | | - // // let's not show this error to users |
173 | | - // const { error: logError } = console |
174 | | - // console.error = (...args) => { |
175 | | - // if (typeof args[0] === 'string' && args[0].includes('/deps_temp')) |
176 | | - // return |
177 | | - // return logError(...args) |
178 | | - // } |
179 | | - // } |
180 | 165 | Object.assign(config, optimizeConfig) |
181 | 166 |
|
182 | 167 | return config |
|
0 commit comments