@@ -2,6 +2,7 @@ var fs = require('fs');
22var path = require ( 'path' ) ;
33var through = require ( 'through' ) ;
44var FileSystemLoader = require ( 'css-modules-loader-core/lib/file-system-loader' ) ;
5+ var assign = require ( 'object-assign' ) ;
56
67var cssExt = / \. c s s $ / ;
78module . 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 ) ;
0 commit comments