@@ -10,6 +10,7 @@ import { toArray } from '@vitest/utils'
10
10
import MagicString from 'magic-string'
11
11
import { basename , dirname , extname , resolve } from 'pathe'
12
12
import sirv from 'sirv'
13
+ import * as vite from 'vite'
13
14
import { coverageConfigDefaults } from 'vitest/config'
14
15
import { getFilePoolName , resolveApiServerConfig , resolveFsAllow , distDir as vitestDist } from 'vitest/node'
15
16
import { distRoot } from './constants'
@@ -540,27 +541,41 @@ body {
540
541
{
541
542
name : 'vitest:browser:support-testing-library' ,
542
543
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 : / ^ @ v u e \/ ( t e s t - u t i l s | c o m p i l e r - c o r e ) $ / } , ( 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 : / ^ @ v u e \/ ( t e s t - u t i l s | c o m p i l e r - c o r e ) $ / } ,
550
+ handler ( source : string , importer : string ) {
551
+ const resolved = getRequire ( ) . resolve ( source , {
552
+ paths : [ importer ! ] ,
553
+ } )
554
+ return resolved
561
555
} ,
562
556
} ,
563
557
}
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 : / ^ @ v u e \/ ( t e s t - u t i l s | c o m p i l e r - c o r e ) $ / } , ( 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
+ }
564
579
} ,
565
580
} ,
566
581
]
0 commit comments