@@ -458,7 +458,8 @@ export function cssPostPlugin(config: ResolvedConfig): Plugin {
458
458
// resolve asset URL placeholders to their built file URLs
459
459
function resolveAssetUrlsInCss ( chunkCSS : string , cssAssetName : string ) {
460
460
const encodedPublicUrls = encodePublicUrlsInCSS ( config )
461
- const assetsBase = config . experimental . buildAdvancedBaseOptions . assets
461
+ const { assets : assetsBase , public : publicBase } =
462
+ config . experimental . buildAdvancedBaseOptions
462
463
const cssAssetDirname =
463
464
encodedPublicUrls || assetsBase . relative
464
465
? getCssAssetDirname ( cssAssetName )
@@ -475,23 +476,25 @@ export function cssPostPlugin(config: ResolvedConfig): Plugin {
475
476
? relativePath
476
477
: './' + relativePath
477
478
} else {
478
- if ( assetsBase . runtime ) {
479
- // config.logger.error('Error TODO:base')... absolute + runtime
480
- }
479
+ // assetsBase.runtime has no effect for assets in CSS
481
480
return ( assetsBase . url ?? config . base ) + filename
482
481
}
483
482
} )
484
- // resolve public URL from CSS paths, TODO:base
483
+ // resolve public URL from CSS paths
485
484
if ( encodedPublicUrls ) {
486
485
const relativePathToPublicFromCSS = path . posix . relative (
487
486
cssAssetDirname ! ,
488
487
''
489
488
)
490
- chunkCSS = chunkCSS . replace (
491
- publicAssetUrlRE ,
492
- ( _ , hash ) =>
493
- relativePathToPublicFromCSS + publicAssetUrlMap . get ( hash ) !
494
- )
489
+ chunkCSS = chunkCSS . replace ( publicAssetUrlRE , ( _ , hash ) => {
490
+ const publicUrl = publicAssetUrlMap . get ( hash ) !
491
+ if ( publicBase . relative ) {
492
+ return relativePathToPublicFromCSS + publicUrl
493
+ } else {
494
+ // publicBase.runtime has no effect for assets in CSS
495
+ return ( publicBase . url ?? config . base ) + publicUrl . slice ( 1 )
496
+ }
497
+ } )
495
498
}
496
499
return chunkCSS
497
500
}
0 commit comments