@@ -36,6 +36,8 @@ var Project = function () {
36
36
this . middlewares = [ ] ;
37
37
this . beforePackCallbacks = [ ] ;
38
38
this . packCallbacks = [ ] ;
39
+ this . beforePack = [ ] ;
40
+ this . afterPack = [ ] ;
39
41
this . eslintConfig = require ( '../config/eslint.json' ) ;
40
42
this . configFile = globby . sync ( [ 'ykit.*.js' , 'ykit.js' ] , { cwd : this . cwd } ) [ 0 ] || '' ;
41
43
this . extendConfig = this . configFile && this . configFile . match ( / y k i t \. ( [ \w \. ] + ) \. j s / ) && this . configFile . match ( / y k i t \. ( [ \w \. ] + ) \. j s / ) [ 1 ] && this . configFile . match ( / y k i t \. ( [ \w \. ] + ) \. j s / ) [ 1 ] . replace ( / \. / g, '-' ) ;
@@ -100,9 +102,12 @@ var Project = function () {
100
102
config : _this2 . config . getConfig ( ) ,
101
103
commands : _this2 . commands ,
102
104
middlewares : _this2 . middlewares ,
105
+ // 兼容 ykit-config-yo 的 beforePackCallbacks 和 packCallbacks
103
106
applyBeforePack : _this2 . applyBeforePack . bind ( _this2 ) ,
104
107
beforePackCallbacks : _this2 . beforePackCallbacks ,
105
108
packCallbacks : _this2 . packCallbacks ,
109
+ beforePack : _this2 . beforePack ,
110
+ afterPack : _this2 . afterPack ,
106
111
eslintConfig : _this2 . eslintConfig ,
107
112
applyMiddleware : _this2 . config . applyMiddleware . bind ( _this2 . config ) ,
108
113
env : _this2 . _getCurrentEnv ( ) , // 默认为本地环境,
@@ -118,12 +123,14 @@ var Project = function () {
118
123
var ykitConfigStartWith = 'ykit-config-' ;
119
124
if ( Array . isArray ( configMethod . plugins ) ) {
120
125
_this2 . plugins = configMethod . plugins ;
126
+ } else if ( typeof configMethod . plugins === 'string' ) {
127
+ _this2 . plugins = [ configMethod . plugins ] ;
121
128
}
122
129
123
- // 通配置文件名获取插件
130
+ // 通过配置文件名获取插件
124
131
if ( _this2 . extendConfig && _this2 . extendConfig !== 'config' ) {
125
132
var pluginName = ykitConfigStartWith + _this2 . extendConfig ;
126
- if ( _this2 . plugins . indexOf ( pluginName ) === - 1 && _this2 . plugins . indexOf ( '@qnpm/' + pluginName ) === - 1 ) {
133
+ if ( _this2 . plugins . indexOf ( _this2 . extendConfig ) === - 1 ) {
127
134
_this2 . plugins . push ( pluginName ) ;
128
135
}
129
136
}
@@ -206,7 +213,7 @@ var Project = function () {
206
213
207
214
extend ( true , this . config , userConfigObj ) ;
208
215
this . config . setExports ( exports ) ;
209
- this . config . setCompiler ( userConfigObj . modifyWebpackConfig ) ;
216
+ this . config . setCompiler ( userConfigObj . modifyWebpackConfig , userConfig ) ;
210
217
this . config . setSync ( userConfigObj . sync ) ;
211
218
this . setCommands ( configMethod . commands || userConfigObj . command ) ; // 后者兼容以前形式
212
219
} ;
@@ -455,17 +462,17 @@ var Project = function () {
455
462
// 更新 stats
456
463
stats . compilation . assets = Object . keys ( nextAssets ) . length > 0 ? nextAssets : originAssets ;
457
464
458
- afterPack ( ) ;
465
+ handleAfterPack ( ) ;
459
466
}
460
467
} ) ;
461
468
} ) ;
462
469
} ) ( ) ;
463
470
} else {
464
- afterPack ( ) ;
471
+ handleAfterPack ( ) ;
465
472
}
466
473
467
- function afterPack ( ) {
468
- async . series ( self . packCallbacks . map ( function ( packCallback ) {
474
+ function handleAfterPack ( ) {
475
+ async . series ( self . packCallbacks . concat ( self . afterPack ) . map ( function ( packCallback ) {
469
476
return function ( callback ) {
470
477
var isAsync = false ;
471
478
@@ -521,26 +528,26 @@ var Project = function () {
521
528
} ;
522
529
523
530
async . series ( this . beforePackCallbacks . map ( function ( beforePackItem ) {
531
+ return function ( callback ) {
532
+ // 支持旧的 beforePackCallbacks 形式
533
+ beforePackItem ( callback , opt ) ;
534
+ } ;
535
+ } ) . concat ( this . beforePack . map ( function ( beforePackItem ) {
524
536
return function ( callback ) {
525
537
// 支持异步调用
526
- if ( beforePackItem . length === 2 ) {
527
- // 支持旧的 beforePackCallbacks 形式
528
- beforePackItem ( callback , opt ) ;
529
- } else {
530
- var isAsync = false ;
531
- beforePackItem . bind ( {
532
- async : function async ( ) {
533
- isAsync = true ;
534
- return callback ;
535
- }
536
- } ) ( opt ) ;
537
-
538
- if ( ! isAsync ) {
539
- callback ( null ) ;
538
+ var isAsync = false ;
539
+ beforePackItem . bind ( {
540
+ async : function async ( ) {
541
+ isAsync = true ;
542
+ return callback ;
540
543
}
544
+ } ) ( opt ) ;
545
+
546
+ if ( ! isAsync ) {
547
+ callback ( null ) ;
541
548
}
542
549
} ;
543
- } ) , function ( err ) {
550
+ } ) ) , function ( err ) {
544
551
compilerProcess ( ) ;
545
552
} ) ;
546
553
0 commit comments