@@ -14,6 +14,8 @@ import {
1414import { CLIENT_ENTRY } from '../constants'
1515import { fileToUrl } from './asset'
1616import { preloadHelperId } from './importAnalysisBuild'
17+ import type { InternalResolveOptions } from './resolve'
18+ import { tryFsResolve } from './resolve'
1719
1820/**
1921 * Convert `new URL('./foo.png', import.meta.url)` to its resolved built URL
@@ -29,6 +31,16 @@ export function assetImportMetaUrlPlugin(config: ResolvedConfig): Plugin {
2931 const normalizedPublicDir = normalizePath ( config . publicDir )
3032 let assetResolver : ResolveFn
3133
34+ const fsResolveOptions : InternalResolveOptions = {
35+ ...config . resolve ,
36+ root : config . root ,
37+ isProduction : config . isProduction ,
38+ isBuild : config . command === 'build' ,
39+ packageCache : config . packageCache ,
40+ ssrConfig : config . ssr ,
41+ asSrc : true ,
42+ }
43+
3244 return {
3345 name : 'vite:asset-import-meta-url' ,
3446 async transform ( code , id , options ) {
@@ -98,6 +110,7 @@ export function assetImportMetaUrlPlugin(config: ResolvedConfig): Plugin {
98110 let file : string | undefined
99111 if ( url [ 0 ] === '.' ) {
100112 file = slash ( path . resolve ( path . dirname ( id ) , url ) )
113+ file = tryFsResolve ( file , fsResolveOptions ) ?? file
101114 } else {
102115 assetResolver ??= config . createResolver ( {
103116 extensions : [ ] ,
0 commit comments