@@ -2433,23 +2433,31 @@ const makeScssWorker = (
24332433 return unquotedUrl . startsWith ( '#{' )
24342434 }
24352435
2436- const internalImporter : Sass . Importer < 'async' > = {
2436+ const createInternalImporter = (
2437+ isForRelative : boolean ,
2438+ ) : Sass . Importer < 'async' > => ( {
24372439 async canonicalize ( url , context ) {
2438- const importer = context . containingUrl
2439- ? fileURLToPath ( context . containingUrl )
2440- : options . filename
2441- const resolved = await resolvers . sass (
2442- environment ,
2443- url ,
2444- cleanScssBugUrl ( importer ) ,
2445- )
2446- if (
2447- resolved &&
2448- ( resolved . endsWith ( '.css' ) ||
2449- resolved . endsWith ( '.scss' ) ||
2450- resolved . endsWith ( '.sass' ) )
2451- ) {
2452- return pathToFileURL ( resolved )
2440+ if ( isForRelative ) {
2441+ // sass passes resolved paths for importer passed to `importer` option
2442+ const resolved = new URL ( url , context . containingUrl ?? undefined )
2443+ if ( fs . existsSync ( resolved ) ) return resolved
2444+ } else {
2445+ const importer = context . containingUrl
2446+ ? fileURLToPath ( context . containingUrl )
2447+ : options . filename
2448+ const resolved = await resolvers . sass (
2449+ environment ,
2450+ url ,
2451+ cleanScssBugUrl ( importer ) ,
2452+ )
2453+ if (
2454+ resolved &&
2455+ ( resolved . endsWith ( '.css' ) ||
2456+ resolved . endsWith ( '.scss' ) ||
2457+ resolved . endsWith ( '.sass' ) )
2458+ ) {
2459+ return pathToFileURL ( resolved )
2460+ }
24532461 }
24542462 return null
24552463 } ,
@@ -2472,12 +2480,13 @@ const makeScssWorker = (
24722480 result . contents ?? ( await fsp . readFile ( result . file , 'utf-8' ) )
24732481 return { contents, syntax, sourceMapUrl : canonicalUrl }
24742482 } ,
2475- }
2483+ } )
2484+
24762485 sassOptions . importers = [
24772486 ...( sassOptions . importers ?? [ ] ) ,
2478- internalImporter ,
2487+ createInternalImporter ( false ) ,
24792488 ]
2480- sassOptions . importer ??= internalImporter
2489+ sassOptions . importer ??= createInternalImporter ( true )
24812490
24822491 const result = await compiler . compileStringAsync ( data , sassOptions )
24832492 return {
0 commit comments