@@ -12,9 +12,9 @@ var requireg = require('requireg');
12
12
var path = require ( 'path' ) ;
13
13
var fs = require ( 'fs' ) ;
14
14
15
- var Config = require ( './Config.js' ) ,
16
- Manager = require ( '../modules/manager.js' ) ,
17
- ExtractTextPlugin = require ( 'extract-text-webpack-plugin' ) ;
15
+ var Config = require ( './Config.js' ) ;
16
+ var Manager = require ( '../modules/manager.js' ) ;
17
+ var ExtractTextPlugin = require ( 'extract-text-webpack-plugin' ) ;
18
18
19
19
var UtilFs = require ( '../utils/fs.js' ) ;
20
20
var UtilPath = require ( '../utils/path.js' ) ;
@@ -290,6 +290,7 @@ var Project = function () {
290
290
var _this3 = this ;
291
291
292
292
var self = this ,
293
+ packStartTime = Date . now ( ) ,
293
294
config = this . config . getConfig ( ) ;
294
295
295
296
UtilFs . deleteFolderRecursive ( this . cachePath ) ;
@@ -301,35 +302,19 @@ var Project = function () {
301
302
}
302
303
303
304
var compilerProcess = function compilerProcess ( ) {
305
+ // 打包前设置
304
306
if ( opt . sourcemap ) {
305
307
config . devtool = opt . sourcemap ;
306
308
}
307
-
308
309
if ( ! opt . quiet ) {
309
310
config . plugins . push ( require ( '../plugins/progressBarPlugin.js' ) ) ;
310
311
}
311
-
312
312
if ( opt . min ) {
313
- // variable name mangling
314
- var mangle = true ;
315
- if ( typeof opt . min === 'string' && opt . min . split ( '=' ) [ 0 ] === 'mangle' && opt . min . split ( '=' ) [ 1 ] === 'false' ) {
316
- mangle = false ;
317
- }
318
-
319
- config . plugins . push ( new webpack . optimize . UglifyJsPlugin ( {
320
- compress : {
321
- warnings : false
322
- } ,
323
- mangle : mangle
324
- } ) ) ;
325
313
config . output = config . output . prd ;
326
314
config . devtool = '' ;
327
315
} else {
328
316
config . output = config . output . dev ;
329
317
}
330
-
331
- _this3 . fixCss ( ) ;
332
-
333
318
if ( opt . clean ) {
334
319
try {
335
320
UtilFs . deleteFolderRecursive ( config . output . path ) ;
@@ -338,48 +323,90 @@ var Project = function () {
338
323
}
339
324
}
340
325
326
+ _this3 . fixCss ( ) ;
327
+
341
328
webpack ( config , function ( err , stats ) {
342
- globby . sync ( '**/*.cache' , { cwd : config . output . path } ) . map ( function ( p ) {
329
+ var cwd = config . output . path ;
330
+
331
+ globby . sync ( '**/*.cache' , { cwd : cwd } ) . map ( function ( p ) {
343
332
return sysPath . join ( config . output . path , p ) ;
344
333
} ) . forEach ( function ( fp ) {
345
334
fs . unlinkSync ( fp ) ;
346
335
} ) ;
347
336
348
- if ( ! err ) {
349
- async . series ( _this3 . packCallbacks . map ( function ( packCallback ) {
350
- return function ( callback ) {
351
- packCallback ( opt , stats ) ;
352
- callback ( null ) ;
353
- } ;
354
- } ) , function ( err ) {
355
- var statsInfo = stats . toJson ( { errorDetails : false } ) ;
356
-
357
- process . stdout . write ( '\n' + '\x1b[90m' + '-------------------------- YKIT PACKED ASSETS -------------------------- ' + '\x1b[0m \n\n' ) ;
358
-
359
- if ( statsInfo . errors . length > 0 ) {
360
- statsInfo . errors . map ( function ( err ) {
361
- error ( err . red ) ;
362
- info ( ) ;
363
- } ) ;
364
- }
365
- if ( statsInfo . warnings . length > 0 ) {
366
- statsInfo . warnings . map ( function ( warning ) {
367
- warn ( warning . yellow ) ;
368
- info ( ) ;
369
- } ) ;
370
- }
337
+ // 压缩
338
+ var computecluster = require ( 'compute-cluster' ) ;
339
+ var cc = new computecluster ( {
340
+ module : sysPath . resolve ( __dirname , '../modules/minifyWorker.js' ) ,
341
+ max_backlog : - 1 ,
342
+ max_processes : 5
343
+ } ) ;
371
344
372
- var assetsInfo = self . config . _config . assetsInfo || statsInfo . assets ;
373
- assetsInfo . map ( function ( asset ) {
374
- var size = asset . size > 1024 ? ( asset . size / 1024 ) . toFixed ( 2 ) + ' kB' : asset . size + ' bytes' ;
375
- if ( ! / \. c a c h e $ / . test ( asset . name ) ) {
376
- log ( '- ' . gray + asset . name + ' - ' + size ) ;
377
- }
378
- } ) ;
345
+ if ( opt . min ) {
346
+ ( function ( ) {
347
+ spinner . start ( ) ;
348
+
349
+ var assetsInfo = stats . toJson ( {
350
+ errorDetails : false
351
+ } ) . assets ;
352
+ var processToRun = assetsInfo . length ;
353
+
354
+ assetsInfo . forEach ( function ( asset ) {
355
+ cc . enqueue ( {
356
+ opt : opt ,
357
+ cwd : cwd ,
358
+ assetName : asset . name
359
+ } , function ( err ) {
360
+ if ( err ) {
361
+ error ( 'an error occured:' , err ) ;
362
+ }
379
363
380
- info ( ) ;
381
- callback ( err , stats ) ;
382
- } ) ;
364
+ processToRun -= 1 ;
365
+ spinner . text = '[Minify] ' + ( assetsInfo . length - processToRun ) + '/' + assetsInfo . length + ' assets' ;
366
+
367
+ if ( processToRun === 0 ) {
368
+ cc . exit ( ) ;
369
+ spinner . stop ( ) ;
370
+ logTime ( 'minify complete!' ) ;
371
+
372
+ async . series ( self . packCallbacks . map ( function ( packCallback ) {
373
+ return function ( callback ) {
374
+ packCallback ( opt , stats ) ;
375
+ callback ( null ) ;
376
+ } ;
377
+ } ) , function ( err ) {
378
+ var statsInfo = stats . toJson ( { errorDetails : false } ) ;
379
+
380
+ process . stdout . write ( '\n' + '\x1b[90m' + '-------------------------- YKIT PACKED ASSETS -------------------------- ' + '\x1b[0m \n\n' ) ;
381
+
382
+ if ( statsInfo . errors . length > 0 ) {
383
+ statsInfo . errors . map ( function ( err ) {
384
+ error ( err . red + '\n' ) ;
385
+ } ) ;
386
+ }
387
+ if ( statsInfo . warnings . length > 0 ) {
388
+ statsInfo . warnings . map ( function ( warning ) {
389
+ warn ( warning . yellow + '\n' ) ;
390
+ } ) ;
391
+ }
392
+
393
+ var assetsInfo = self . config . _config . assetsInfo || statsInfo . assets ;
394
+ assetsInfo . map ( function ( asset ) {
395
+ var size = asset . size > 1024 ? ( asset . size / 1024 ) . toFixed ( 2 ) + ' kB' : asset . size + ' bytes' ;
396
+ if ( ! / \. c a c h e $ / . test ( asset . name ) ) {
397
+ log ( '- ' . gray + asset . name + ' - ' + size ) ;
398
+ }
399
+ } ) ;
400
+
401
+ var packDuration = Date . now ( ) - packStartTime > 1000 ? Math . floor ( ( Date . now ( ) - packStartTime ) / 1000 ) + 's' : Date . now ( ) - packStartTime + 'ms' ;
402
+ log ( 'Finished in ' + packDuration + '.\n' ) ;
403
+
404
+ callback ( err , stats ) ;
405
+ } ) ;
406
+ }
407
+ } ) ;
408
+ } ) ;
409
+ } ) ( ) ;
383
410
}
384
411
} ) ;
385
412
} ;
0 commit comments