Skip to content

Commit c169f98

Browse files
authoredFeb 28, 2023
fix: optimize dependencies in setup files (#2935)
1 parent bc377fe commit c169f98

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed
 

‎packages/vitest/src/node/core.ts

+6
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,12 @@ export class Vitest {
136136
return deepMerge<ResolvedConfig>({
137137
...this.config,
138138
reporters: [],
139+
deps: {
140+
...this.config.deps,
141+
experimentalOptimizer: {
142+
enabled: this.config.deps?.experimentalOptimizer?.enabled ?? false,
143+
},
144+
},
139145
snapshotOptions: {
140146
...this.config.snapshotOptions,
141147
resolveSnapshotPath: undefined,

‎packages/vitest/src/node/plugins/index.ts

+16-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1+
import { builtinModules } from 'node:module'
12
import type { UserConfig as ViteConfig, Plugin as VitePlugin } from 'vite'
2-
import { relative } from 'pathe'
3+
import { normalize, relative, resolve } from 'pathe'
4+
import { toArray } from '@vitest/utils'
5+
import { resolveModule } from 'local-pkg'
36
import { configDefaults } from '../../defaults'
47
import type { ResolvedConfig, UserConfig } from '../../types'
58
import { deepMerge, notNullish, removeUndefinedValues } from '../../utils'
@@ -150,14 +153,24 @@ export async function VitestPlugin(options: UserConfig = {}, ctx = new Vitest('t
150153
}
151154
}
152155
else {
153-
const entries = await ctx.globAllTestFiles(preOptions as ResolvedConfig, preOptions.dir || getRoot())
156+
const root = config.root || process.cwd()
157+
const entries = await ctx.globAllTestFiles(preOptions as ResolvedConfig, preOptions.dir || root)
158+
if (preOptions?.setupFiles) {
159+
const setupFiles = toArray(preOptions.setupFiles).map((file: string) =>
160+
normalize(
161+
resolveModule(file, { paths: [root] })
162+
?? resolve(root, file),
163+
),
164+
)
165+
entries.push(...setupFiles)
166+
}
154167
optimizeConfig.cacheDir = preOptions.cache?.dir ?? 'node_modules/.vitest'
155168
optimizeConfig.optimizeDeps = {
156169
...viteConfig.optimizeDeps,
157170
...optimizer,
158171
disabled: false,
159172
entries: [...(optimizer.entries || viteConfig.optimizeDeps?.entries || []), ...entries],
160-
exclude: ['vitest', ...(optimizer.exclude || viteConfig.optimizeDeps?.exclude || [])],
173+
exclude: ['vitest', ...builtinModules, ...(optimizer.exclude || viteConfig.optimizeDeps?.exclude || [])],
161174
include: (optimizer.include || viteConfig.optimizeDeps?.include || []).filter((n: string) => n !== 'vitest'),
162175
}
163176
// Vite throws an error that it cannot rename "deps_temp", but optimization still works

0 commit comments

Comments
 (0)
Please sign in to comment.