@@ -80,16 +80,11 @@ var cssExt = /\.css$/;
8080//
8181// persist these for as long as the process is running. #32
8282
83- // keep track of css files visited
84- var filenames = [ ] ;
85-
8683// keep track of all tokens so we can avoid duplicates
8784var tokensByFile = { } ;
8885
89- // keep track of all source files for later builds: when
90- // using watchify, not all files will be caught on subsequent
91- // bundles
92- var sourceByFile = { } ;
86+ // we need a separate loader for each entry point
87+ var loadersByFile = { } ;
9388
9489module . exports = function ( browserify , options ) {
9590 options = options || { } ;
@@ -103,9 +98,10 @@ module.exports = function (browserify, options) {
10398 var jsonOutFilename = options . json || options . jsonOutput ;
10499 var sourceKey = cssOutFilename ;
105100
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 ] || { } ;
101+ var loader = loadersByFile [ sourceKey ] ;
102+ if ( ! loader ) {
103+ loader = loadersByFile [ sourceKey ] = new FileSystemLoader ( rootDir , plugins ) ;
104+ }
109105
110106 // PostCSS plugins passed to FileSystemLoader
111107 var plugins = options . use || options . u ;
@@ -158,10 +154,6 @@ module.exports = function (browserify, options) {
158154 return through ( ) ;
159155 }
160156
161- // collect visited filenames
162- filenames . push ( filename ) ;
163-
164- var loader = new FileSystemLoader ( rootDir , plugins ) ;
165157 return through ( function noop ( ) { } , function end ( ) {
166158 var self = this ;
167159
@@ -170,11 +162,6 @@ module.exports = function (browserify, options) {
170162
171163 assign ( tokensByFile , loader . tokensByFile ) ;
172164
173- // store this file's source to be written out to disk later
174- sourceByFile [ sourceKey ] [ filename ] = loader . finalSource ;
175-
176- compiledCssStream . push ( loader . finalSource ) ;
177-
178165 self . queue ( output ) ;
179166 self . queue ( null ) ;
180167 } , function ( err ) {
@@ -196,18 +183,14 @@ module.exports = function (browserify, options) {
196183
197184 bundle . on ( 'end' , function ( ) {
198185 // Combine the collected sources for a single bundle into a single CSS file
199- var files = Object . keys ( sourceByFile [ sourceKey ] ) ;
200- var css ;
186+ var css = loader . finalSource ;
201187
202188 // end the output stream
189+ compiledCssStream . push ( css ) ;
203190 compiledCssStream . push ( null ) ;
204191
205192 // write the css file
206193 if ( cssOutFilename ) {
207- css = files . map ( function ( file ) {
208- return sourceByFile [ sourceKey ] [ file ] ;
209- } ) . join ( '\n' ) ;
210-
211194 fs . writeFile ( cssOutFilename , css , function ( err ) {
212195 if ( err ) {
213196 browserify . emit ( 'error' , err ) ;
0 commit comments