@@ -80,16 +80,11 @@ var cssExt = /\.css$/;
80
80
//
81
81
// persist these for as long as the process is running. #32
82
82
83
- // keep track of css files visited
84
- var filenames = [ ] ;
85
-
86
83
// keep track of all tokens so we can avoid duplicates
87
84
var tokensByFile = { } ;
88
85
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 = { } ;
93
88
94
89
module . exports = function ( browserify , options ) {
95
90
options = options || { } ;
@@ -103,9 +98,10 @@ module.exports = function (browserify, options) {
103
98
var jsonOutFilename = options . json || options . jsonOutput ;
104
99
var sourceKey = cssOutFilename ;
105
100
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
+ }
109
105
110
106
// PostCSS plugins passed to FileSystemLoader
111
107
var plugins = options . use || options . u ;
@@ -158,10 +154,6 @@ module.exports = function (browserify, options) {
158
154
return through ( ) ;
159
155
}
160
156
161
- // collect visited filenames
162
- filenames . push ( filename ) ;
163
-
164
- var loader = new FileSystemLoader ( rootDir , plugins ) ;
165
157
return through ( function noop ( ) { } , function end ( ) {
166
158
var self = this ;
167
159
@@ -170,11 +162,6 @@ module.exports = function (browserify, options) {
170
162
171
163
assign ( tokensByFile , loader . tokensByFile ) ;
172
164
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
-
178
165
self . queue ( output ) ;
179
166
self . queue ( null ) ;
180
167
} , function ( err ) {
@@ -196,18 +183,14 @@ module.exports = function (browserify, options) {
196
183
197
184
bundle . on ( 'end' , function ( ) {
198
185
// 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 ;
201
187
202
188
// end the output stream
189
+ compiledCssStream . push ( css ) ;
203
190
compiledCssStream . push ( null ) ;
204
191
205
192
// write the css file
206
193
if ( cssOutFilename ) {
207
- css = files . map ( function ( file ) {
208
- return sourceByFile [ sourceKey ] [ file ] ;
209
- } ) . join ( '\n' ) ;
210
-
211
194
fs . writeFile ( cssOutFilename , css , function ( err ) {
212
195
if ( err ) {
213
196
browserify . emit ( 'error' , err ) ;
0 commit comments