Skip to content

Commit 716b029

Browse files
authored
refactor(browser): apply optimize deps plugin for rolldown (#7750)
1 parent a550551 commit 716b029

File tree

1 file changed

+33
-18
lines changed

1 file changed

+33
-18
lines changed

packages/browser/src/node/plugin.ts

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { toArray } from '@vitest/utils'
1010
import MagicString from 'magic-string'
1111
import { basename, dirname, extname, resolve } from 'pathe'
1212
import sirv from 'sirv'
13+
import * as vite from 'vite'
1314
import { coverageConfigDefaults } from 'vitest/config'
1415
import { getFilePoolName, resolveApiServerConfig, resolveFsAllow, distDir as vitestDist } from 'vitest/node'
1516
import { distRoot } from './constants'
@@ -540,27 +541,41 @@ body {
540541
{
541542
name: 'vitest:browser:support-testing-library',
542543
config() {
543-
return {
544-
optimizeDeps: {
545-
esbuildOptions: {
546-
plugins: [
547-
{
548-
name: 'test-utils-rewrite',
549-
setup(build) {
550-
// test-utils: resolve to CJS instead of the browser because the browser version expects a global Vue object
551-
// compiler-core: only CJS version allows slots as strings
552-
build.onResolve({ filter: /^@vue\/(test-utils|compiler-core)$/ }, (args) => {
553-
const resolved = getRequire().resolve(args.path, {
554-
paths: [args.importer],
555-
})
556-
return { path: resolved }
557-
})
558-
},
559-
},
560-
],
544+
const rolldownPlugin = {
545+
name: 'vue-test-utils-rewrite',
546+
resolveId: {
547+
// test-utils: resolve to CJS instead of the browser because the browser version expects a global Vue object
548+
// compiler-core: only CJS version allows slots as strings
549+
filter: { id: /^@vue\/(test-utils|compiler-core)$/ },
550+
handler(source: string, importer: string) {
551+
const resolved = getRequire().resolve(source, {
552+
paths: [importer!],
553+
})
554+
return resolved
561555
},
562556
},
563557
}
558+
559+
const esbuildPlugin = {
560+
name: 'test-utils-rewrite',
561+
// "any" because vite doesn't expose any types for this
562+
setup(build: any) {
563+
// test-utils: resolve to CJS instead of the browser because the browser version expects a global Vue object
564+
// compiler-core: only CJS version allows slots as strings
565+
build.onResolve({ filter: /^@vue\/(test-utils|compiler-core)$/ }, (args: any) => {
566+
const resolved = getRequire().resolve(args.path, {
567+
paths: [args.importer],
568+
})
569+
return { path: resolved }
570+
})
571+
},
572+
}
573+
574+
return {
575+
optimizeDeps: 'rolldownVersion' in vite
576+
? { rollupOptions: { plugins: [rolldownPlugin] } }
577+
: { esbuildOptions: { plugins: [esbuildPlugin] } },
578+
}
564579
},
565580
},
566581
]

0 commit comments

Comments
 (0)