@@ -300,9 +300,11 @@ function esbuildScanPlugin(
300
300
'@vite/env' ,
301
301
]
302
302
303
+ const isUnlessEntry = ( path : string ) => ! entries . includes ( path )
304
+
303
305
const externalUnlessEntry = ( { path } : { path : string } ) => ( {
304
306
path,
305
- external : ! entries . includes ( path ) ,
307
+ external : isUnlessEntry ( path ) ,
306
308
} )
307
309
308
310
const doTransformGlobImport = async (
@@ -549,25 +551,39 @@ function esbuildScanPlugin(
549
551
// they are done after the bare import resolve because a package name
550
552
// may end with these extensions
551
553
552
- // css
553
- build . onResolve ( { filter : CSS_LANGS_RE } , externalUnlessEntry )
554
+ const setupExternalize = (
555
+ filter : RegExp ,
556
+ doExternalize : ( path : string ) => boolean ,
557
+ ) => {
558
+ build . onResolve ( { filter } , ( { path } ) => {
559
+ return {
560
+ path,
561
+ external : doExternalize ( path ) ,
562
+ }
563
+ } )
564
+ // onResolve is not called for glob imports.
565
+ // we need to add that here as well until esbuild calls onResolve for glob imports.
566
+ // https://github.com/evanw/esbuild/issues/3317
567
+ build . onLoad ( { filter, namespace : 'file' } , ( ) => {
568
+ const externalOnLoadResult : OnLoadResult = {
569
+ loader : 'js' ,
570
+ contents : 'export default {}' ,
571
+ }
572
+ return externalOnLoadResult
573
+ } )
574
+ }
554
575
576
+ // css
577
+ setupExternalize ( CSS_LANGS_RE , isUnlessEntry )
555
578
// json & wasm
556
- build . onResolve ( { filter : / \. ( j s o n | j s o n 5 | w a s m ) $ / } , externalUnlessEntry )
557
-
579
+ setupExternalize ( / \. ( j s o n | j s o n 5 | w a s m ) $ / , isUnlessEntry )
558
580
// known asset types
559
- build . onResolve (
560
- {
561
- filter : new RegExp ( `\\.(${ KNOWN_ASSET_TYPES . join ( '|' ) } )$` ) ,
562
- } ,
563
- externalUnlessEntry ,
581
+ setupExternalize (
582
+ new RegExp ( `\\.(${ KNOWN_ASSET_TYPES . join ( '|' ) } )$` ) ,
583
+ isUnlessEntry ,
564
584
)
565
-
566
585
// known vite query types: ?worker, ?raw
567
- build . onResolve ( { filter : SPECIAL_QUERY_RE } , ( { path } ) => ( {
568
- path,
569
- external : true ,
570
- } ) )
586
+ setupExternalize ( SPECIAL_QUERY_RE , ( ) => true )
571
587
572
588
// catch all -------------------------------------------------------------
573
589
0 commit comments