@@ -101,6 +101,11 @@ module.exports = function (browserify, options) {
101101
102102 var cssOutFilename = options . output || options . o ;
103103 var jsonOutFilename = options . json || options . jsonOutput ;
104+ var sourceKey = cssOutFilename ;
105+
106+ // keying our source caches by the name of our output file means we can
107+ // isolate css compilation of seperate bundles that are running in parallel
108+ sourceByFile [ sourceKey ] = sourceByFile [ sourceKey ] || { } ;
104109
105110 // PostCSS plugins passed to FileSystemLoader
106111 var plugins = options . use || options . u ;
@@ -166,7 +171,7 @@ module.exports = function (browserify, options) {
166171 assign ( tokensByFile , loader . tokensByFile ) ;
167172
168173 // store this file's source to be written out to disk later
169- sourceByFile [ filename ] = loader . finalSource ;
174+ sourceByFile [ sourceKey ] [ filename ] = loader . finalSource ;
170175
171176 compiledCssStream . push ( loader . finalSource ) ;
172177
@@ -190,8 +195,8 @@ module.exports = function (browserify, options) {
190195 bundle . emit ( 'css stream' , compiledCssStream ) ;
191196
192197 bundle . on ( 'end' , function ( ) {
193- // Combine the collected sources into a single CSS file
194- var files = Object . keys ( sourceByFile ) ;
198+ // Combine the collected sources for a single bundle into a single CSS file
199+ var files = Object . keys ( sourceByFile [ sourceKey ] ) ;
195200 var css ;
196201
197202 // end the output stream
@@ -200,7 +205,7 @@ module.exports = function (browserify, options) {
200205 // write the css file
201206 if ( cssOutFilename ) {
202207 css = files . map ( function ( file ) {
203- return sourceByFile [ file ] ;
208+ return sourceByFile [ sourceKey ] [ file ] ;
204209 } ) . join ( '\n' ) ;
205210
206211 fs . writeFile ( cssOutFilename , css , function ( err ) {
0 commit comments