Skip to content

Commit bcd92c0

Browse files
committed
avoid importing styles from the same file twice
1 parent a826f72 commit bcd92c0

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

index.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ var fs = require('fs');
22
var path = require('path');
33
var through = require('through');
44
var FileSystemLoader = require('css-modules-loader-core/lib/file-system-loader');
5+
var assign = require('object-assign');
56

67
var cssExt = /\.css$/;
78
module.exports = function (browserify, options) {
@@ -15,7 +16,12 @@ module.exports = function (browserify, options) {
1516
var cssOut = through();
1617
cssOut.pipe(fs.createWriteStream(cssOutFilename));
1718

19+
// keep track of css files visited
1820
var filenames = [];
21+
22+
// keep track of all tokens so we can avoid duplicates
23+
var tokensByFile = {};
24+
1925
browserify.transform(function transform (filename) {
2026
// only handle .css files
2127
if (!cssExt.test(filename)) {
@@ -29,9 +35,14 @@ module.exports = function (browserify, options) {
2935
var self = this;
3036

3137
var loader = new FileSystemLoader(path.dirname(filename));
38+
39+
// pre-populate the loader's tokensByFile
40+
loader.tokensByFile = tokensByFile;
41+
3242
loader.fetch(path.basename(filename), '/').then(function (tokens) {
3343
var output = "module.exports = " + JSON.stringify(tokens);
3444

45+
assign(tokensByFile, loader.tokensByFile);
3546
cssOut.queue(loader.finalSource);
3647

3748
self.queue(output);

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
"description": "A browserify transform to load CSS Modules",
55
"main": "index.js",
66
"dependencies": {
7-
"css-modules-loader-core": "0.0.7",
7+
"css-modules-loader-core": "0.0.8",
8+
"object-assign": "^3.0.0",
89
"through": "^2.3.7"
910
},
1011
"devDependencies": {},

0 commit comments

Comments
 (0)