@@ -2,6 +2,7 @@ var fs = require('fs');
2
2
var path = require ( 'path' ) ;
3
3
var through = require ( 'through' ) ;
4
4
var FileSystemLoader = require ( 'css-modules-loader-core/lib/file-system-loader' ) ;
5
+ var assign = require ( 'object-assign' ) ;
5
6
6
7
var cssExt = / \. c s s $ / ;
7
8
module . exports = function ( browserify , options ) {
@@ -15,7 +16,12 @@ module.exports = function (browserify, options) {
15
16
var cssOut = through ( ) ;
16
17
cssOut . pipe ( fs . createWriteStream ( cssOutFilename ) ) ;
17
18
19
+ // keep track of css files visited
18
20
var filenames = [ ] ;
21
+
22
+ // keep track of all tokens so we can avoid duplicates
23
+ var tokensByFile = { } ;
24
+
19
25
browserify . transform ( function transform ( filename ) {
20
26
// only handle .css files
21
27
if ( ! cssExt . test ( filename ) ) {
@@ -29,9 +35,14 @@ module.exports = function (browserify, options) {
29
35
var self = this ;
30
36
31
37
var loader = new FileSystemLoader ( path . dirname ( filename ) ) ;
38
+
39
+ // pre-populate the loader's tokensByFile
40
+ loader . tokensByFile = tokensByFile ;
41
+
32
42
loader . fetch ( path . basename ( filename ) , '/' ) . then ( function ( tokens ) {
33
43
var output = "module.exports = " + JSON . stringify ( tokens ) ;
34
44
45
+ assign ( tokensByFile , loader . tokensByFile ) ;
35
46
cssOut . queue ( loader . finalSource ) ;
36
47
37
48
self . queue ( output ) ;
0 commit comments