@@ -9,6 +9,7 @@ var FileSystemLoader = require('./file-system-loader');
9
9
var assign = require ( 'object-assign' ) ;
10
10
var stringHash = require ( 'string-hash' ) ;
11
11
var ReadableStream = require ( 'stream' ) . Readable ;
12
+ var through = require ( 'through' ) ;
12
13
13
14
/*
14
15
Custom `generateScopedName` function for `postcss-modules-scope`.
@@ -123,7 +124,7 @@ module.exports = function (browserify, options) {
123
124
return name ;
124
125
}
125
126
126
- var plugin = require ( require . resolve ( name ) ) ;
127
+ var plugin = module . parent . require ( name ) ;
127
128
128
129
// custom scoped name generation
129
130
if ( name === 'postcss-modules-scope' ) {
@@ -207,37 +208,48 @@ module.exports = function (browserify, options) {
207
208
208
209
browserify . emit ( 'css stream' , compiledCssStream ) ;
209
210
210
- bundle . on ( 'end' , function ( ) {
211
+ browserify . pipeline . get ( 'pack' ) . push ( through ( null , function ( ) {
211
212
// Combine the collected sources for a single bundle into a single CSS file
213
+ var self = this ;
212
214
var loader = loadersByFile [ cssOutFilename ] ;
213
215
var css = loader . finalSource ;
214
216
215
217
// end the output stream
216
218
compiledCssStream . push ( css ) ;
217
219
compiledCssStream . push ( null ) ;
218
220
221
+ const writes = [ ] ;
222
+
219
223
// write the css file
220
224
if ( cssOutFilename ) {
221
- fs . writeFile ( cssOutFilename , css , function ( err ) {
222
- if ( err ) {
223
- browserify . emit ( 'error' , err ) ;
224
- }
225
- } ) ;
225
+ writes . push ( writeFile ( cssOutFilename , css ) ) ;
226
226
}
227
227
228
228
// write the classname manifest
229
229
if ( jsonOutFilename ) {
230
- fs . writeFile ( jsonOutFilename , JSON . stringify ( normalizeManifestPaths ( tokensByFile , rootDir ) ) , function ( err ) {
231
- if ( err ) {
232
- browserify . emit ( 'error' , err ) ;
233
- }
234
- } ) ;
230
+ writes . push ( writeFile ( jsonOutFilename , JSON . stringify ( normalizeManifestPaths ( tokensByFile , rootDir ) ) ) ) ;
235
231
}
236
- } ) ;
232
+
233
+ Promise . all ( writes )
234
+ . then ( function ( ) { self . queue ( null ) ; } )
235
+ . catch ( function ( err ) { self . emit ( 'error' , err ) ; } )
236
+ } ) ) ;
237
237
} ) ;
238
238
239
+
239
240
return browserify ;
240
241
} ;
241
242
243
+ function writeFile ( filename , content ) {
244
+ return new Promise ( function ( resolve , reject ) {
245
+ fs . writeFile ( filename , content , function ( err ) {
246
+ if ( err )
247
+ reject ( err ) ;
248
+ else
249
+ resolve ( ) ;
250
+ } ) ;
251
+ } ) ;
252
+ }
253
+
242
254
module . exports . generateShortName = generateShortName ;
243
255
module . exports . generateLongName = generateLongName ;
0 commit comments