@@ -230,10 +230,9 @@ function getComponentDirectories(moduleDirectories: string[], sassConfig: SassCo
230
230
function render ( context : BuildContext , sassConfig : SassConfig ) : Promise < string > {
231
231
return new Promise ( ( resolve , reject ) => {
232
232
233
- sassConfig . omitSourceMapUrl = true ;
233
+ sassConfig . omitSourceMapUrl = false ;
234
234
235
235
if ( sassConfig . sourceMap ) {
236
- sassConfig . sourceMap = basename ( sassConfig . outFile ) ;
237
236
sassConfig . sourceMapContents = true ;
238
237
}
239
238
@@ -266,7 +265,8 @@ function renderSassSuccess(context: BuildContext, sassResult: Result, sassConfig
266
265
let autoPrefixerMapOptions : any = false ;
267
266
if ( sassConfig . sourceMap ) {
268
267
autoPrefixerMapOptions = {
269
- inline : false
268
+ inline : false ,
269
+ prev : generateSourceMaps ( sassResult , sassConfig )
270
270
} ;
271
271
}
272
272
@@ -283,10 +283,10 @@ function renderSassSuccess(context: BuildContext, sassResult: Result, sassConfig
283
283
Logger . warn ( warn . toString ( ) ) ;
284
284
} ) ;
285
285
286
- let apMapResult : string = null ;
286
+ let apMapResult : SassMap = null ;
287
287
if ( sassConfig . sourceMap && postCssResult . map ) {
288
288
Logger . debug ( `sass, parse postCssResult.map` ) ;
289
- apMapResult = JSON . parse ( postCssResult . map . toString ( ) ) . mappings ;
289
+ apMapResult = generateSourceMaps ( postCssResult , sassConfig ) ;
290
290
}
291
291
292
292
Logger . debug ( `sass: postcss/autoprefixer completed` ) ;
@@ -295,18 +295,13 @@ function renderSassSuccess(context: BuildContext, sassResult: Result, sassConfig
295
295
}
296
296
297
297
// without autoprefixer
298
- generateSourceMaps ( sassResult , sassConfig ) ;
299
-
300
- let sassMapResult : string = null ;
301
- if ( sassResult . map ) {
302
- sassMapResult = JSON . parse ( sassResult . map . toString ( ) ) . mappings ;
303
- }
298
+ let sassMapResult : SassMap = generateSourceMaps ( sassResult , sassConfig ) ;
304
299
305
300
return writeOutput ( context , sassConfig , sassResult . css . toString ( ) , sassMapResult ) ;
306
301
}
307
302
308
303
309
- function generateSourceMaps ( sassResult : Result , sassConfig : SassConfig ) {
304
+ function generateSourceMaps ( sassResult : Result , sassConfig : SassConfig ) : SassMap {
310
305
// this can be async and nothing needs to wait on it
311
306
312
307
// build Source Maps!
@@ -338,16 +333,13 @@ function generateSourceMaps(sassResult: Result, sassConfig: SassConfig) {
338
333
return src ;
339
334
}
340
335
} ) ;
341
-
342
- // Replace the map file with the original file name (but new extension)
343
- // sassMap.file = gutil.replaceExtension(sassFileSrc, '.css');
344
- // Apply the map
345
- // applySourceMap(file, sassMap);
336
+ return sassMap ;
346
337
}
347
338
}
348
339
349
340
350
- function writeOutput ( context : BuildContext , sassConfig : SassConfig , cssOutput : string , mappingsOutput : string ) : Promise < string > {
341
+ function writeOutput ( context : BuildContext , sassConfig : SassConfig , cssOutput : string , sourceMap : SassMap ) : Promise < string > {
342
+ let mappingsOutput : string = JSON . stringify ( sourceMap ) ;
351
343
return new Promise ( ( resolve , reject ) => {
352
344
353
345
Logger . debug ( `sass start write output: ${ sassConfig . outFile } ` ) ;
@@ -461,6 +453,9 @@ export interface SassConfig {
461
453
462
454
463
455
export interface SassMap {
456
+ version : number ;
464
457
file : string ;
465
- sources : any [ ] ;
458
+ sources : string [ ] ;
459
+ mappings : string ;
460
+ names : any [ ] ;
466
461
}
0 commit comments