@@ -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`.
@@ -206,37 +207,48 @@ module.exports = function (browserify, options) {
206
207
207
208
browserify . emit ( 'css stream' , compiledCssStream ) ;
208
209
209
- bundle . on ( 'end' , function ( ) {
210
+ browserify . pipeline . get ( 'pack' ) . push ( through ( null , function ( ) {
210
211
// Combine the collected sources for a single bundle into a single CSS file
212
+ var self = this ;
211
213
var loader = loadersByFile [ cssOutFilename ] ;
212
214
var css = loader . finalSource ;
213
215
214
216
// end the output stream
215
217
compiledCssStream . push ( css ) ;
216
218
compiledCssStream . push ( null ) ;
217
219
220
+ const writes = [ ] ;
221
+
218
222
// write the css file
219
223
if ( cssOutFilename ) {
220
- fs . writeFile ( cssOutFilename , css , function ( err ) {
221
- if ( err ) {
222
- browserify . emit ( 'error' , err ) ;
223
- }
224
- } ) ;
224
+ writes . push ( writeFile ( cssOutFilename , css ) ) ;
225
225
}
226
226
227
227
// write the classname manifest
228
228
if ( jsonOutFilename ) {
229
- fs . writeFile ( jsonOutFilename , JSON . stringify ( normalizeManifestPaths ( tokensByFile , rootDir ) ) , function ( err ) {
230
- if ( err ) {
231
- browserify . emit ( 'error' , err ) ;
232
- }
233
- } ) ;
229
+ writes . push ( writeFile ( jsonOutFilename , JSON . stringify ( normalizeManifestPaths ( tokensByFile , rootDir ) ) ) ) ;
234
230
}
235
- } ) ;
231
+
232
+ Promise . all ( writes )
233
+ . then ( function ( ) { self . queue ( null ) ; } )
234
+ . catch ( function ( err ) { self . emit ( 'error' , err ) ; } )
235
+ } ) ) ;
236
236
} ) ;
237
237
238
+
238
239
return browserify ;
239
240
} ;
240
241
242
+ function writeFile ( filename , content ) {
243
+ return new Promise ( function ( resolve , reject ) {
244
+ fs . writeFile ( filename , content , function ( err ) {
245
+ if ( err )
246
+ reject ( err ) ;
247
+ else
248
+ resolve ( ) ;
249
+ } ) ;
250
+ } ) ;
251
+ }
252
+
241
253
module . exports . generateShortName = generateShortName ;
242
254
module . exports . generateLongName = generateLongName ;
0 commit comments