@@ -2433,23 +2433,31 @@ const makeScssWorker = (
2433
2433
return unquotedUrl . startsWith ( '#{' )
2434
2434
}
2435
2435
2436
- const internalImporter : Sass . Importer < 'async' > = {
2436
+ const createInternalImporter = (
2437
+ isForRelative : boolean ,
2438
+ ) : Sass . Importer < 'async' > => ( {
2437
2439
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
+ }
2453
2461
}
2454
2462
return null
2455
2463
} ,
@@ -2472,12 +2480,13 @@ const makeScssWorker = (
2472
2480
result . contents ?? ( await fsp . readFile ( result . file , 'utf-8' ) )
2473
2481
return { contents, syntax, sourceMapUrl : canonicalUrl }
2474
2482
} ,
2475
- }
2483
+ } )
2484
+
2476
2485
sassOptions . importers = [
2477
2486
...( sassOptions . importers ?? [ ] ) ,
2478
- internalImporter ,
2487
+ createInternalImporter ( false ) ,
2479
2488
]
2480
- sassOptions . importer ??= internalImporter
2489
+ sassOptions . importer ??= createInternalImporter ( true )
2481
2490
2482
2491
const result = await compiler . compileStringAsync ( data , sassOptions )
2483
2492
return {
0 commit comments