Skip to content

Commit f9a2ea2

Browse files
committed
use the same loader across all files (within a context)
1 parent 882f90f commit f9a2ea2

File tree

1 file changed

+8
-25
lines changed

1 file changed

+8
-25
lines changed

index.js

Lines changed: 8 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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
8784
var 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

9489
module.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

Comments
 (0)